はじめに
PowerShell で実行したデータを CSV に出力することは基本のコマンドで出来ますが
更にそこから「欲しいデータだけを」「見やすく」「複数の PC やサーバーまとめて」
出力したいとなると、ひと工夫が必要だと思います。
一旦出力した複数の CSV データを後から成形するというのも一つの手ですが
今回、出力前に PowerShell 側でデータの配列をカスタムしようという試みを紹介します。
基本の型
まず最初に空の配列を作成します。
$Collection =New-Object System.Collections.ArrayList
次にカスタムオブジェクトを作成していきます。
$Property = New-Object -TypeName PSObject
作成したカスタムオブジェクトに「プロパティ名」と「値」を追加します。
$Property |Add-Member -Type NoteProperty -Name "プロパティ名" -Value ”値”
最後に、作成したオブジェクトを配列に入れます。
$Collection.add($Property)
基本の型はこれだけです。
実際にやってみる
例として、「ホスト名」「OSバージョン」「ドメイン」の3つのカスタムオブジェクトを作成します。
今回は、簡単に値もベタ打ちで指定します。
$Collection =New-Object System.Collections.ArrayList
$Property = New-Object -TypeName PSObject
$Property |Add-Member -Type NoteProperty -Name "ホスト名" -Value ”TestWin10”
$Property |Add-Member -Type NoteProperty -Name "OSバージョン" -Value ”10.0.19042”
$Property |Add-Member -Type NoteProperty -Name "ドメイン" -Value ”test.local”
$Collection.add($Property)
上記の基本型+下記コマンドで CSV に吐き出してみます。
$Collection |Export-Csv ”CSVの出力パスを指定” -Encoding Default -NoTypeInformation -Force
結果は下記の通りになりました。
指定した通りにプロパティと値が入っていますね。
おわりに
PowerShell は、実はオブジェクトを扱っているがゆえに上記のようなカスタムが可能です。
次回は基本の型を使って、複数の PC やサーバーで一つの CSV ファイルに出力する方法を紹介したいと思います。