PowerShellからCSVファイルに情報を送信する必要がある場合、Export-CSVコマンドレットが役立ちます。このコマンドレットは、テキストファイルから構造化された形式に変換する手間を省くために、管理者に多くの時間を節約してくれます。Excelで遊ぶ代わりに、PowerShellを使用してCSVファイルを作成することができます。
Export-Csvコマンドレットを使用すると、任意のPowerShellオブジェクトからレポートにデータベース送信などのためのCSVファイルを作成することができます。
CSV形式は、テキストファイルとして保存された行のカンマ区切りリストです。テキストファイルであるため、実際には汎用のテキストファイルコマンド(Set-Content
など)を使用して処理することも可能です。ただし、汎用のコマンドを使用する場合、必要なCSVの構造を自分で構築する必要があります。CSVの出力をファイルに送信するためにすでにExport-Csv
コマンドがあるので、それを使用するほうが便利です。
CSVファイルには特定の構造が必要です。このコマンドレットが情報を理解し、読み取り、CSVファイルに変換する能力があるため、このPowerShellコマンドレットは非常に便利です。
ManageEngine ADManager Plusを使用して、Active Directory、Exchange、Microsoft 365を管理およびレポートします。 無料トライアルをダウンロード!
オブジェクト -eq CSV行
Export-Csv
コマンドレットには単一の目的があります。それはPowerShellオブジェクトをCSVファイルに保存することです。
例えば、foo
とbar
という2つのプロパティを持つオブジェクトがあるとしましょう。それぞれのプロパティには1
と2
という値があります。このオブジェクトをExport-Csv
に送信すると、2つの列と1行のCSVファイルが作成されます。その後、CSVの内容をインポートして表示することができます。
PowerShellは実質的にメモリ内のオブジェクトとCSVファイルを同じように扱います!また、列ラベルがヘッダーであることも指定しています。このコマンドレットを使用してオブジェクトをエクスポートすることは、オブジェクトをファイルシステムに保存することと同じです。汎用テキストPowerShellコマンドGet-Content
を使用して、Export-Csv
コマンドがエクスポートした生のテキストを確認することができます。
このコマンドが各行エントリの周りに二重引用符を使用していることに注目してください。これにより、スペースを含むフィールドを含めることができます。
Export-Csvの便利なパラメータ
Windows PowerShell 5.1では、Export-CsvコマンドレットはCSVファイルを作成したオブジェクトのタイプを示す行を出力します。この行を非表示にしたい場合、人気のあるパラメータであるNoTypeInformation
を使用することができます。
多くの異なるCSVファイルやデータソースと一緒に作業する場合、既存のファイルを上書きしてしまうことがあることに気付くかもしれません。ただし、Append
パラメータを使用していれば問題ありません。 Append
パラメータを使用すると、既存のファイルを上書きする代わりに、行をCSVに追加することができます。
もう1つ便利なパラメータはDelimiter
です。場合によっては、通常のリストセパレータ(カンマ)ではなく、フィールドを区切るためにタブを使用するCSVファイルが必要になることがあります。また、セミコロンを使用することもあります。 Export-Csv
PowerShellコマンドレットは、必要な区切り文字を指定することでこれらの問題を解決するのに役立ちます。
引用符の処理
CSVの行を作成する際、Export-Csv
はすべてのフィールドを引用符で囲みます。一部の状況では、これは望ましくない場合があります。残念ながら、それを防ぐ方法はありません。ただし、少しのコードを使用することで実現できます。
以下に、CSVファイルを作成する例が示されています。その後、Get-Content
は生のテキストファイルを読み取り、メモリ内のすべての二重引用符を削除します。その情報をメモリからディスクに書き込むためにSet-Content
を使用します。
ManageEngine ADManager PlusでActive Directory、Exchange、Microsoft 365を管理およびレポートします。 無料トライアルをダウンロード!
概要
Export-Csv
コマンドレットは、CSVデータを管理するためのシンプルで非常に便利なツールです。CSVデータファイルの構造を理解し、PowerShellオブジェクトをCSV行に変換することができます。
I’m not about to go back to batch, or VBScript where creating a CSV file from an existing object required instantiating a FileSystemObject, creating a loop and a bunch of Write()
methods!
このコマンドは、PowerShellコードを書き始める素晴らしい理由の一つです!