我正在尝试创建一个 PowerShell 脚本来列出 Azure 网络安全组,它是所有订阅的规则并将其导出到 CSV。
下面是我的代码,其中列出了所有 NSG 规则名称、描述、优先级、SourceAddressPrefix、SourcePortRange、DestinationAddressPrefix、DestinationPortRange、协议、访问和方向。
############# List All Azure Network Security Groups #############
$subs = Get-AzSubscription
foreach ($sub in $subs) {
Select-AzSubscription -SubscriptionId $sub.Id
$nsgs = Get-AzNetworkSecurityGroup
Foreach ($nsg in $nsgs) {
$nsgRules = $nsg.SecurityRules
foreach ($nsgRule in $nsgRules) {
$nsgRule | Select-Object @{n='SubscriptionName';e={$sub.Name}},
@{n='ResourceGroupName';e={$nsg.ResourceGroupName}},
@{n='NetworkSecurityGroupName';e={$nsg.Name}},
Name,Description,Priority,
@{Name='SourceAddressPrefix';Expression={[string]::join(",", ($_.SourceAddressPrefix))}},
@{Name='SourcePortRange';Expression={[string]::join(",", ($_.SourcePortRange))}},
@{Name='DestinationAddressPrefix';Expression={[string]::join(",", ($_.DestinationAddressPrefix))}},
@{Name='DestinationPortRange';Expression={[string]::join(",", ($_.DestinationPortRange))}},
Protocol,Access,Direction |
Export-Csv "C:\Users\admin-vishal.singh\Desktop\Test\nsg\NsgRules.csv" -NoTypeInformation -Encoding ASCII -Append
}
}
}
我还尝试在$nsgRule |下调用对象 Resourcegroup、SubscriptionName Select-Object它给了我空白列,标题为 Resourcegroup,subscriptionName。
我试图得到这样的输出:
我不知道我需要在哪个 for 循环中进行更改才能获得上述输出。
基本上,我试图从所有订阅中列出所有带有规则的 Azure NSG,其中包含相应的 ResourcegroupName、subscriptionName。