PowerShell で CSVファイルを操作する

実行環境

実行環境は以下となります。

  • Windows Server 2019

CSVファイルのインポート

スクリプトだと、取り込んだファイルに従い、繰り返し処理をしたいことがあるので、ファイルの取り込み処理は必ず覚えておく必要があります。

今回の例では、以下のようなユーザー一覧の CSVファイルを取り込む前提とします。

Import-Csv

PowerShell で CSVファイルを読み込む時は、Import-CSV コマンドレットを使います。ただし、インポートするファイルのエンコードを指定しないと、以下のように文字化けする場合があります。

 

そのため、以下のように「-Encoding」オプションでエンコードを指定します。オプションで指定出来るのは、ASCII/BigEndianUnicode/Default/OEM/Unicode/UTF32/UTF7/UTF8 です。(Windows Server 2019 のメモ帳のデフォルト形式は ANSI なので Default を指定する必要があります。)

Get-Content + ConvertFrom-Csv

Get-Content コマンドレットは、取り込むファイル形式を自動的に判別してくれるので個別に指定する必要はないので、Get-Content と ConvertFrom-Csv コマンドレットと組み合わせることが可能です。

 

foreach コマンドで繰り返し実行

取り込んだ CSVファイルを1行ずつ繰り返し実行するのは、foreach コマンドを使うと便利。値は、格納した変数に「.」をつけて CSVファイルのカラム名を指定すれば利用可能です。ここでは標準出力に出力する Write-Host コマンドレットだけど、この分を AD にユーザ登録を行う Set-Aduser コマンドレットとかを組み合わせるとユーザー登録が可能。

CSVファイルのエクスポート

Export-Csv

AD のユーザー一覧を CSVファイルに出力

 

Export-Csv のデフォルトだとカンマ(,)区切りなので、区切り文字を変えたい場合には文字列を指定します。タブ区切りにしたい場合には “`t” を指定。

 

デフォルトだと、CSVファイルの1行目に型の情報が入るので、含めたくない場合には「-NoTypeInformation」オプションを指定。