Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
48
Help us understand the problem. What is going on with this article?
@TAKA-SHU

PowerShellからデータを出力するパターンまとめ

More than 1 year has passed since last update.

PowerShell上に表示させた情報を別の形式やファイルに出力する方法をまとめます。

環境

  • PowerShell Version:5.1.17134.228

テキストファイル(.txt)に出力

Start-Transcript

コマンドの入出力を全てテキストファイルに記録するコマンドです。
入力したコマンドがそのまま記録されるので、作業のログに適してます。

記録の開始

Start-Transcript

既定の保存先C:\User\%UserName%\Documentsに記録される。

保存先を指定して記録を開始

Start-Transcript C:\Temp\Transcript.txt

ファイルを絶対パスで指定する。

既存のテキストファイルに追記して記録を開始

Start-Transcript C:\Temp\Transcript.txt -Append

指定したテキストファイルの一番下に追加して記録を開始する。

(-Appendを指定しない場合、同じ名前のファイルがあると上書きして記録を開始してしまう)

記録の終了

Stop-Transcript

Out-File

1つのコマンドや変数をテキストファイルに出力するコマンドです。

実行例

Get-Mailbox -Identity User01 |Out-File C:\temp\User01.txt

リダイレクト演算子で実行

Get-Mailbox -Identity User01 > C:\temp\User01.txt

Out-File>でも代替できる。

あっ、この出力、テキストで欲しいな、なんてときは、
キーで直前のコマンドを呼びだして、これを書き足してあげましょう。

CSVファイル(.csv)に出力

Export-Csv

コマンドの結果をCSVファイルで出力します。

メールの配信ログなど情報量が多いときによく使います。

Excelで再編集もしやすいです。

実行例

Get-Mailbox -Identity User01 | Export-Csv -Path C:\temp\User01.csv -Encoding UTF8 -NoTypeInformation

-Encodingパラメーターで文字化けを防ぎ、

-NoTypeInformationパラメーターで先頭行に型の情報を入れないようにします。

実行例(応用)

$Output = Get-Mailbox -Identity User01
$Output += Get-Mailbox -Identity User02
$Output | Export-Csv -Path C:\temp\User.csv -Encoding UTF8 -NoTypeInformation

変数からパイプ処理が可能なので、
こうして、まとめて1つのファイルに出力することができます。便利。

XMLファイル(.xml)に出力

Export-CliXml

コマンドの結果をXMLファイルに出力します。

ひとつのオブジェクトの情報を出力するときによく使います。

実行例

Get-Mailbox -Identity User01 | Export-CliXml -Path C:\temp\User01.xml

実行例(応用)

あとからファイルをPowerShellにインポートして、オブジェクトとして扱うことができます。

まず、変数にインポートします。

$File = Import-CliXml -Path C:\temp\User01.xml

この$Fileを以下のようにPowerShellのコマンドで操作できます。

$File | fl
$File | ?{$_.Alias -eq "User01"}
$File | Set-Mailbox -UseDatabaseQuotaDefaults $False

設定変更する前の状態をXmlファイルに出力しておけば、
変更前の値を簡単に参照したり、そこから簡単に戻したりできます。

クリップボードにコピー

| Clip

ファイルではなく、コマンドの出力をクリップボードにコピーします。

実行例

Get-Mailbox -Identity User01 | Clip

入力したコマンドの出力がそのままコピーされます。

以下のように出力を整形するとキレイです。

Get-Mailbox -Identity User01 | fl | Clip
Get-Mailbox -Identity User01 | fl Alias,SamAccountName -AutoSize | Clip

参考

自身の過去記事を加筆修正しました。

48
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
TAKA-SHU
サッカー × IT × すぐ動く Microsoftばかりさわってるインフラエンジニア。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
48
Help us understand the problem. What is going on with this article?