PowerShellスクリプトの実行結果をログ出力する方法3選

こんにちは。
けいぞうです。

今回は「PowerShellスクリプトの事項結果をログ出力する方法」についての記事です。

[目次]

PowerShellのログ出力方法まとめ

よく使われるログ出力方法は以下の3つです。

  • Set-Content/Add-Content
  • Out-File
  • Start-Transcript

Set-Content/Add-Content

Set-Contentは指定したパスに指定した内容を上書き保存で出力します。
既存ファイルに追記したい場合は、Add-Contentを使用します。

Set-Content -Path "出力先のパス" -Value "出力したい内容"
Add-Content -Path "出力先のパス" -Value "出力したい内容"

OutFile

指定したパスに、パイプラインで渡された内容が上書き保存で出力されます。

"出力したい内容" | Out-File "出力先のパス"

既存ファイルに追記したい場合は、「-Append」を付与します。

"出力したい内容" | Out-File "出力先のパス" -Append

Start-Transcript

Start-TranscriptからStop-Transcriptまでで実行されたコマンドレットを、指定されたパスのファイルに全て出力します。

Start-Transcript "出力先のパス"

#処理内容

Stop-Transcript

イメージとしては、StartからStopまでの処理の標準出力を全て指定のパスのファイルにするという感じです。

例えば、以下のようなスクリプトを実行したとします。

Start-Transcript "C:\work\Script\log.txt"

#DataTableの作成
$hoge = New-Object System.Data.DataTable

#列の追加
$hoge.Columns.Add("c1")
$hoge.Columns.Add("c2")
$hoge.Columns.Add("c3")

#データ(行)の追加
$hoge.Rows.Add("bbb","bbb","ccc")

$ResultTable = @{
"TargetUser" = $hoge
"result" = 1
}

$ResultTable

Stop-Transcript

結果として、「C:\work\Script\log.txt」にこんな感じで出力されます。

**********************
Windows PowerShell トランスクリプト開始
開始時刻: 20200405122041
ユーザー名: XXXXXXXXX
RunAs ユーザー: XXXXXXXXX
構成名: 
コンピューター: XXXX (Microsoft Windows NT 10.0.18362.0)
ホスト アプリケーション: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
プロセス ID: 3364
PSVersion: 5.1.18362.628
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.18362.628
BuildVersion: 10.0.18362.628
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
トランスクリプトが開始されました。出力ファイル: C:\work\Script\log.txt


AllowDBNull        : True
AutoIncrement      : False
AutoIncrementSeed  : 0
AutoIncrementStep  : 1
Caption            : c1
ColumnName         : c1
Prefix             :
DataType           : System.String
DateTimeMode       : UnspecifiedLocal
DefaultValue       :
Expression         :
ExtendedProperties : {}
MaxLength          : -1
Namespace          :
Ordinal            : 0
ReadOnly           : False
Table              : {}
Unique             : False
ColumnMapping      : Element
Site               :
Container          :
DesignMode         : False

AllowDBNull        : True
AutoIncrement      : False
AutoIncrementSeed  : 0
AutoIncrementStep  : 1
Caption            : c2
ColumnName         : c2
Prefix             :
DataType           : System.String
DateTimeMode       : UnspecifiedLocal
DefaultValue       :
Expression         :
ExtendedProperties : {}
MaxLength          : -1
Namespace          :
Ordinal            : 1
ReadOnly           : False
Table              : {}
Unique             : False
ColumnMapping      : Element
Site               :
Container          :
DesignMode         : False

AllowDBNull        : True
AutoIncrement      : False
AutoIncrementSeed  : 0
AutoIncrementStep  : 1
Caption            : c3
ColumnName         : c3
Prefix             :
DataType           : System.String
DateTimeMode       : UnspecifiedLocal
DefaultValue       :
Expression         :
ExtendedProperties : {}
MaxLength          : -1
Namespace          :
Ordinal            : 2
ReadOnly           : False
Table              : {}
Unique             : False
ColumnMapping      : Element
Site               :
Container          :
DesignMode         : False

c1 : bbb
c2 : bbb
c3 : ccc

Key   : result
Value : 1
Name  : result

Key   : TargetUser
Value : {System.Data.DataRow}
Name  : TargetUser

**********************
Windows PowerShell トランスクリプト終了
終了時刻: 20200405122042
**********************