![](/img/trans.png)
[英]Export Azure Network Security Group Rules to CSV using powershell
[英]Export NSG rules to a csv file using powershell
我正在嘗試使用 powershell 在 Azure 中的所有訂閱中導出所有網絡安全組 (NSG) 規則。
$sub = Get-AzSubscription
$sub | foreach-object {
$null = $PSItem | Select-AzSubscription
$null = Get-AzNetworkSecurityGroup -OutVariable +nsg
foreach ($obj in $nsg)
{
$obj.SecurityRules | Select-Object -OutVariable +rules @{ n = 'NSG Name'; e = {$obj.Name}},
@{ n = 'ResourceGroupName'; e = {$obj.ResourceGroupName}},
*
}
}
$rules | export-csv C:\Users\ABC\Desktop\NSG.csv
但是,導出的 csv 文件有許多帶有“System.Collections.Generic.List`1[System.String]”的字段,盡管我可以看到 for 循環運行良好並且生成了所有數據。
我對 powershell 非常陌生,因此非常感謝您對此的任何幫助。
如果您使用Export-Csv
或ConvertTo-Csv
導出為 CSV 的對象具有包含值集合(數組)的屬性值,則這些值將通過其.ToString()
方法進行字符串化,這會導致表示無用。
假設您想在單個 CSV 列中表示數組值屬性的所有值,要解決此問題,您必須為整個集合確定一個有意義的字符串表示形式,並使用Select-Object
和計算屬性來實現它:
例如,您可以使用 -join 運算符來創建以空格分隔的元素列表:
$obj.SecurityRules | Select-Object -OutVariable +rules @{ n = 'NSG Name'; e = {$obj.Name -join ' '}}, @{ n = 'ResourceGroupName'; e = {$obj.ResourceGroupName -join ' '}},*
有關更多詳細信息,您可以參考此SO thread 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.