我正在尝试创建一个新的虚拟网络对象,然后将子网附加到它。我需要一些关于循环/对象创建部分的帮助。下面的代码有效,但我必须对输入文件中的每一行使用Set-AzureRmVirtualNetwork
命令。当我将该Set-命令移到Foreach
循环之外时,它只提交了最后一个子网(CSV的最后一行)。
如何创建对象以便插入多个子网,然后在结束时提交一次?
function New-NCIAzureNetworks-1 {
[CmdletBinding()]
Param (
# Param1 help description
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true,
Position = 0)]
$csvPath
)
$azureSubnets = Import-Csv -Path $csvPath
Foreach ($azureSubnet in $AzureSubnets) {
$vnetName = $azureSubnet.Vnetname
$AddressPrefix = $azureSubnet.AddressPrefix
$SubnetName = $azureSubnet.SubnetName
$resourceGroup = $azureSubnet.ResourceGroup
$vnet = Get-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $resourceGroup
Add-AzureRmVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $vnet -AddressPrefix $AddressPrefix
Set-AzureRmVirtualNetwork -VirtualNetwork $vnet
}
}
答案 0 :(得分:1)
不,这是不可能的。请参阅此official document。
然后使用Add-AzureRmVirtualNetworkSubnetConfig
将子网添加到虚拟网络的内存中表示中。 Set-AzureRmVirtualNetwork
命令使用新子网更新现有虚拟网络。
目前,Add-AzureRmVirtualNetworkSubnetConfig
只能将一个子网存储在内存中。因此,您无法使用Set-AzureRmVirtualNetwork
在一个命令中添加多个子网。
但是当您创建VNet时,您可以在一个命令中附加多个子网。请参阅此link。
New-AzureRmVirtualNetwork -Name MyVirtualNetwork -ResourceGroupName TestResourceGroup
-Location centralus -AddressPrefix "10.0.0.0/16" -Subnet $frontendSubnet,$backendSubnet