gpt4 book ai didi

azure - 如何使用 powershell 列出所有订阅中的 Azure 网络安全组

转载 作者:行者123 更新时间:2023-12-02 23:24:40 25 4
gpt4 key购买 nike

我正在尝试创建一个 PowerShell 脚本来列出所有订阅中的 Azure 网络安全组及其规则,并将其导出到 CSV。

下面是我的代码,其中列出了所有 NSG 规则名称、描述、优先级、SourceAddressPrefix、SourcePortRange、DestinationAddressPrefix、DestinationPortRange、协议(protocol)、访问和方向。

############# 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
}
}
}

我得到的上述脚本的输出 enter image description here

我还尝试调用 $nsgRule | 下的对象 Resourcegroup、SubscriptionName Select-Object 它给了我带有标题 Resourcegroup、subscriptionName 的空白列。

我正在尝试获得这样的输出:

enter image description here

我不知道需要在哪个 for 循环中进行更改才能获得如上所述的输出。

基本上,我尝试列出所有 Azure NSG,其中包含来自所有订阅的规则以及相应的 ResourcegroupName、subscriptionName。

最佳答案

您想要返回的额外属性属于与 $nsgRule 不同的对象。您仍然可以通过使用 Select-Object 的计算属性来检索这些属性。

$subs = Get-AzureRmSubscription

foreach ($sub in $subs) {
Select-AzureRmSubscription -SubscriptionId $sub.Id
$nsgs = Get-AzureRmNetworkSecurityGroup

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:\Vishal\NsgRules.csv" -NoTypeInformation -Encoding ASCII -Append
}
}
}

$nsg 包含 ResourceGroupNameName(网络安全组名称)。 $sub 包含订阅名称 Name

关于azure - 如何使用 powershell 列出所有订阅中的 Azure 网络安全组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65722121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com