2017-07-10 10 views
2

私は現在、ネットワーク上のすべてのデバイス(3k +)を含む読みやすいドキュメントを作成しようとしています。現在、私はそうのようなネストされたハッシュテーブル内のすべての私のデータを持っている:PowerShellでネストされたハッシュテーブルエクスポート?

$devices = @{"hostname" = @{"Mac Address" = @{"IP Address" = "True or False"}}} 

それは$devicesに、デバイスのホスト名を格納します。 $hostnameには、そのホスト名に関連付けられたすべてのMACアドレスを含むハッシュテーブルがあります。 MACアドレスには、そのMACアドレスに関連付けられたすべてのIPを含むハッシュテーブルがあります。

ハッシュテーブルを作成してデータを保存するスクリプトの一部をすでに作成しました。私はCSVにデータをエクスポートして道路ブロックに入り込みました.CSV形式でExcelで読むことができます。

 
Hostname, Mac Address, IP Address 
server1, MM.MM.MM.SS.SS.SS , 1.1.1.1 
          1.1.1.2 
     MM.MM.MN.SS.SS.SA , 1.1.1.3 
server2, MM.MM.MB.SS.SS.ST , 1.2.3.1 
          , 1.5.2.1 

などとなる。

編集:あなたはあなたの例のように、正確に出力したい場合は

foreach ($hostname in $devices.Keys) { 
    foreach ($MAC in $devices.$hostname.Keys) { 
     foreach ($IP in $devices.$hostname.$Macs.Keys) { 
      [PSCustomObject]@{ 
       'Hostname' = $hostname 
       'MAC Address' = $MAC 
       'IP Address' = $IP 
      } 
     } 
    } 
} 

$csv | Export-Csv 'C:\path\to\output.csv' -NoType 

foreach ($hostname in $devices.Keys) { 
    echo $hostname 
    foreach ($Macs in $devices.$hostname.Keys) { 
     echo $Macs 
     foreach ($IPs in $devices.$hostname.$Macs.Keys) { 
      echo $IPs 
     } 
    } 
} 
+0

コードを表示する: –

+0

現在のコードを投稿に追加しましたが、現在はハッシュテーブルの内容をエコーし​​ています。 – Kuks35

答えて

0

は、あなたの最も内側のループ内のカスタムオブジェクトを作成して変数に出力を収集し、そのデータをエクスポート(これはお勧めしません)、前の$hostname$MACを追跡し、それぞれの現在の値と一致する場合は空のオブジェクトプロパティを作成する必要があります。

関連する問題