将 IP 配置添加到现有虚拟机的网卡时出现问题



我有一个添加了IP(Primary)的虚拟机网卡。我正试图找到一种方法,我可以添加更多的IP到NIC。我正在使用一段代码,它抛出了一个错误:

最终的解决方案实际上应该让我在网卡上添加4个ip,并更新第一个ip,这是主ip,并将dns ip更新到网卡。

错误扔:nic1-test-ipConfig不能删除。不支持删除和重命名主IP配置StatusCode: 400 ReasonPhrase: Bad Request ErrorCode: IpConfigDeleteNotSupported ErrorMessage: IP Configuration ProdNuma1-nic1-test-ipConfig不能删除

$vnet = Get-AzVirtualNetwork -Name "vnet" -ResourceGroupName "rg"
$subnet1 = Get-AzVirtualNetworkSubnetConfig -Name "sn" -VirtualNetwork $vnet
$location="westcentralus"
$vm="test"
#Adding IP's to ->NIC1
$ipc11 = New-AzNetworkInterfaceIpConfig -Name "ipconfig1" -PrivateIpAddress "10.64.13.10" -Primary -Subnet $subnet1
$ipc12 = New-AzNetworkInterfaceIpConfig -Name "ipconfig2" -PrivateIpAddress "10.64.13.11" -Subnet $subnet1
$ipc13 = New-AzNetworkInterfaceIpConfig -Name "ipconfig3" -PrivateIpAddress "10.64.13.12" -Subnet $subnet1
$ipc14 = New-AzNetworkInterfaceIpConfig -Name "ipconfig4" -PrivateIpAddress "10.64.13.13" -Subnet $subnet1
$ipc15 = New-AzNetworkInterfaceIpConfig -Name "ipconfig5" -PrivateIpAddress "10.64.13.14" -Subnet $subnet1

$NIC1 = New-AzNetworkInterface -Name "nic1-test" -ResourceGroupName "rg" -force -Location $location -IpConfiguration $ipc12,$ipc13,$ipc14,$ipc15 -DnsServer "10.64.2.00","10.64.0.01"

由于网卡已经存在,您应该用Set-AzNetworkInterfaceIpConfig更新ipconfig1,然后用Add-AzNetworkInterfaceIpConfig添加其他网卡。然后可以用Set-AzNetworkInterface更新网卡。

$vnet = Get-AzVirtualNetwork -Name "vnet" -ResourceGroupName "rg"
$subnet1 = Get-AzVirtualNetworkSubnetConfig -Name "sn" -VirtualNetwork $vnet
$vm = Get-AzVM -Name "vm" -ResourceGroupName "rg"
$nicName = $vm.NetworkProfile.NetworkInterfaces[0].Id.Split("/")[-1]
$nic = Get-AzNetworkInterface -Name $nicName -ResourceGroupName "rg"
$nic | Set-AzNetworkInterfaceIpConfig -Name "ipconfig1" -PrivateIpAddress "10.64.13.10" -Primary -Subnet $subnet1
$nic | Add-AzNetworkInterfaceIpConfig -Name "ipconfig2" -PrivateIpAddress "10.64.13.11" -Subnet $subnet1
$nic | Add-AzNetworkInterfaceIpConfig -Name "ipconfig3" -PrivateIpAddress "10.64.13.12" -Subnet $subnet1
$nic | Add-AzNetworkInterfaceIpConfig -Name "ipconfig4" -PrivateIpAddress "10.64.13.13" -Subnet $subnet1
$nic | Add-AzNetworkInterfaceIpConfig -Name "ipconfig5" -PrivateIpAddress "10.64.13.14" -Subnet $subnet1
$nic | Set-AzNetworkInterface

如果您有许多NIC IP配置要添加,您可以使用哈希表数组并使用飞溅。详细信息请参见about_Splatting

$secondaryIpConfigs = @(
@{
Name             = "ipconfig1"
PrivateIpAddress = "10.64.13.10"
Subnet           = $subnet1
Primary          = $true
},
@{
Name             = "ipconfig2"
PrivateIpAddress = "10.64.13.11"
Subnet           = $subnet1
},
@{
Name             = "ipconfig3"
PrivateIpAddress = "10.64.13.12"
Subnet           = $subnet1
},
@{
Name             = "ipconfig4"
PrivateIpAddress = "10.64.13.13"
Subnet           = $subnet1
},
@{
Name             = "ipconfig5"
PrivateIpAddress = "10.64.13.14"
Subnet           = $subnet1
}
)
foreach ($ipconfig in $secondaryIpConfigs) {
$nic | Add-AzNetworkInterfaceIpConfig @ipconfig
}
$nic | Set-AzNetworkInterface

但是,如果ipconfig已经存在,Add-AzNetworkInterfaceIpConfig将抛出错误。您可以使用Get-AzNetworkInterfaceIpConfig首先检查ipconfig是否存在,并相应地添加/更新。为了确保程序在没有找到ipconfig时不会立即抛出错误,我们可以使用-ErrorAction SilentlyContinue

foreach ($ipconfig in $secondaryIpConfigs) {
if ($null -eq (Get-AzNetworkInterfaceIpConfig `
-Name $ipconfig.Name `
-NetworkInterface $nic `
-ErrorAction SilentlyContinue)) {

$nic | Add-AzNetworkInterfaceIpConfig @ipconfig
}
else {
$nic | Set-AzNetworkInterfaceIpConfig @ipconfig
}
}
$nic | Set-AzNetworkInterface

最新更新