簡體   English   中英

使用 powershell 將 NSG 規則導出到 csv 文件

[英]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-CsvConvertTo-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM