0

我正在尝试使用 Powershell 的 AzureRm cmdlet 在 Azure 虚拟机规模集上的网络适配器上添加第二个 IP 地址。

我的代码如下所示:

Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionId "XXXXXXXXXXXXXXXXXXXXXX"
$vnetname = "confvnet"
$loc = "West Europe"
$backendSubnetName = "conf-jira-interlink"
$backendSubnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name $backendSubnetName -AddressPrefix "10.0.4.0/24"
echo "backendSubnetConfig: "$backendSubnetConfig

$vnet = Get-AzureRmVirtualNetwork -Name $vnetname -ResourceGroupName "resourcegroup-confluence-jira-datacenter"
echo "vnet: "$vnet

Add-AzureRmVirtualNetworkSubnetConfig -Name $backendSubnetName -VirtualNetwork $vnet -AddressPrefix "10.0.4.0/24" | Set-AzureRmVirtualNetwork
$subnetId = (Get-AzureRmVirtualNetworkSubnetConfig -Name $backendSubnetName -VirtualNetwork $vnet).Id
echo "subnetId: "$subnetId

$ipCfg = New-AzureRmVmssIPConfig -Name 'eth1' -SubnetId $subnetId -PrivateIPAddressVersion 'IPv4' -Primary $false
echo "ipCfg: "$ipCfg

$backendSubnet = Get-AzureRmVirtualNetworkSubnetConfig -Name $backendSubnetName -VirtualNetwork $vnet
echo "backendSubnet: "$backendSubnet

$vmss = Get-AzureRmVmss -ResourceGroupName resourcegroup-confluence-jira-datacenter -VMScaleSetName confcluster
echo "vmss: "$vmss

Add-AzureRmVmssNetworkInterfaceConfiguration -Name $backendSubnet -Primary $false -IPConfiguration $ipCfg -VirtualMachineScaleSet $vmss
$vmss = Get-AzureRmVmss -ResourceGroupName resourcegroup-confluence-jira-datacenter -VMScaleSetName confcluster
$Nic = Get-AzureRmNetworkInterface -ResourceGroupName "resourcegroup-confluence-jira-datacenter" -VirtualMachineScaleSetName 'confcluster'
echo "Nic: "$Nic

$ipconfig_interlink = New-AzureRmNetworkInterfaceIpConfig -Name "ipconfig-conf-jira-interlink" -Subnet $backendSubnetConfig -PrivateIpAddress "10.0.4.20"
Add-AzureRmNetworkInterfaceIpConfig -Name $ipconfig_interlink.Name -Subnet $backendSubnetConfig -NetworkInterface $Nic
Set-AzureRmNetworkInterfaceIpConfig -Name $ipconfig_interlink.Name -PrivateIpAddress 10.0.4.20 -Subnet $backendSubnetConfig -NetworkInterface $Nic
$Nic = Get-AzureRmNetworkInterface -ResourceGroupName "resourcegroup-confluence-jira-datacenter" -VirtualMachineScaleSetName 'confcluster'
echo "Nic: "$Nic

Set-AzureRmNetworkInterface -NetworkInterface $Nic
Update-AzureRmVmss -ResourceGroupName "resourcegroup-confluence-jira-datacenter" -VMScaleSetName "confcluster" -VirtualMachineScaleSet $vmss

但我得到了错误

Set-AzureRmNetworkInterface : 在 X:\JIRA_Confluence_Migration\PowerShell\network-interfaces-azure-same-vnet.ps1:67 Zeichen:1 + Set-AzureRmNetworkInterface -NetworkInterface $Nic + 中找不到资源'{0}' ~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : CloseError: (:) [Set-AzureRmNetworkInterface],ArgumentException + FullyQualifiedErrorId:Microsoft.Azure.Commands.Network.SetAzureNetworkInterfaceCommand 在 Set-AzureRmNetworkInterface。

有谁知道问题是什么?

4

2 回答 2

1

对于您的问题,您只需要更改如下命令:

$Nic | Set-AzureRmNetworkInterface

然后它将在没有错误的情况下工作。

但正如我在您的脚本中看到的那样,您只需获取网络接口,然后设置它而不做任何更改。如果是这样,该命令不会影响任何内容。您可以查看命令Set-AzureRmNetworkInterface的示例。

更新

根据另一项测试,有一点应该重点关注。Azure VM 规模集实例与 VM 不同。您无法在 VMSS 所在的组中找到实例的网络接口。所有实例都是从相同的配置创建的,网络接口也是如此。如错误所示,找不到资源。

您可以查看如何指定用于静态私有 IP 地址分配的私有 IP 地址范围的问题。所以我认为你想通过命令设置实例的网卡是错误的方式Set-AzureRmNetworkInterface

正如你之前的问题,你可以设置VMSS的网络配置,这是VMSS的正确方法。

于 2019-06-25T02:55:10.127 回答
0

我怀疑它正在寻找 NIC 本身的标识符,而不是对象。尝试:

Set-AzureRmNetworkInterface -NetworkInterface $Nic.Id
于 2019-06-24T13:44:24.750 回答