在PowerShell中以表格形式显示子网的内容
我正在尝试以以下格式显示PowerShell数据在PowerShell中以表格形式显示子网的内容,powershell,azure-powershell,Powershell,Azure Powershell,我正在尝试以以下格式显示PowerShell数据 Vnet Subnet ---- ------ AZRWUSVNET1 default Corpvnet MgmtSubnet Corpvnet Devsubnet Corpvnet QASubnet Corpvnet ProdSubnet 我试过下面的脚本 $a = Get-AzVirtualNetwork $b = $a | Select-Object Name,Subnets $Re
Vnet Subnet
---- ------
AZRWUSVNET1 default
Corpvnet MgmtSubnet
Corpvnet Devsubnet
Corpvnet QASubnet
Corpvnet ProdSubnet
我试过下面的脚本
$a = Get-AzVirtualNetwork
$b = $a | Select-Object Name,Subnets
$ResourceList = @()
foreach ($item in $b)
{
$vnetname = ($b | Where-Object -Property Name -EQ ($item.Name))
$subnet = $vnetname.Subnets.Name
$vnetname = $item.Name
$VMObject = New-Object PSObject
$VMObject | Add-Member -MemberType NoteProperty -Name "Vnet" -Value $vnetname
$VMObject | Add-Member -MemberType NoteProperty -Name "Subnet" -Value $subnet
$ResourceList += $VMObject
}
$ResourceList
但我得到的数据格式如下
Vnet Subnet
---- ------
AZRWUSVNET1 default
Corpvnet {MgmtSubnet, Devsubnet, QASubnet, ProdSubnet…}
任何人都可以在此提供帮助。通过使用
选择对象
提取和注释子网
值,您可以显著简化代码:
Get-AzVirtualNetwork |Select-Object -Property @{Name='Vnet';E=
Name'} -ExpandProperty Subnets |Select-Object Vnet,@{Name='Subnet';Expression={$_.Name}}
如果坚持使用循环,则需要一个嵌套循环(因为各个子网嵌套在每个vnet中):
我刚试过这个,它就解决了
$vNets = Get-AzVirtualNetwork | Select-Object Name, Subnets
$ResourceList=@()
foreach($vNet in $vNets){
foreach($subnet in $vNet.Subnets){
#$subnatename=$vnet.subnets.Name
$VMObject = New-Object PSObject
$VMObject | Add-Member -MemberType NoteProperty -Name "Vnet" -Value $vNet.Name
$VMObject | Add-Member -MemberType NoteProperty -Name "Subnet" -Value $subnet.Name
$ResourceList += $VMObject
}
}
$ResourceList
唯一的更改是$subnet.Name
感谢感谢您提供的解决方案…我在第一个解决方案中运行了这两个解决方案。我收到此错误。无法处理属性,因为属性“Name”已存在。在使用嵌套For循环的解决方案中,这里是我获得的vnet子网-----AZRWUSVNET1 Microsoft.Azure.Commands.Network.Models.PSSubnet Corpvnet Microsoft.Azure.Commands.Network.Models.PSSubnet Corpvnet Microsoft.Azure.Commands.Network.Models.PSSubnet Corpvnet Microsoft.Azure.Commands.Network.Models.PSSubnetCorpvnet Microsoft.Azure.Commands.Network.Models.PSSubnet Corpvnet Microsoft.Azure.Commands.Network.Models。PSSubnet@askwizard我没有Azure租户可供测试,因此我假设
子网
是一个简单的字符串列表。更新了答案
$vNets = Get-AzVirtualNetwork | Select-Object Name, Subnets
$ResourceList=@()
foreach($vNet in $vNets){
foreach($subnet in $vNet.Subnets){
#$subnatename=$vnet.subnets.Name
$VMObject = New-Object PSObject
$VMObject | Add-Member -MemberType NoteProperty -Name "Vnet" -Value $vNet.Name
$VMObject | Add-Member -MemberType NoteProperty -Name "Subnet" -Value $subnet.Name
$ResourceList += $VMObject
}
}
$ResourceList