使用 Powershell 将 NSG 规则导出到 csv 文件



我正在尝试使用 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:UsersABCDesktopNSG.csv

但是,导出的csv文件有许多带有"System.Collections.Generic.List'1[System.String]"的字段,即使我可以看到for循环运行良好并且所有数据都已生成。

我对powershell很陌生,所以任何这方面的帮助将不胜感激。

如果导出为 CSV 且具有Export-CsvConvertTo-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线程。

相关内容

  • 没有找到相关文章

最新更新