0
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PowerShellの処理結果を実行ログとして残したい

Last updated at Posted at 2021-04-09

PowerShellでまとまった処理を実行する場合、実行ログを残したいことがある。そんなときに便利なのが、「start-transcript」〜「stop-transcript」。この間に記述されたPowerShellのコマンドレットの実行結果(標準出力)がログファイルとして出力される。

start-transcript;

# 処理を記述

stop-transcript;

ファイル名や出力先の指定、ファイルの上書き可否などもオプションで設定できる。

オプションを指定しなかった場合はユーザーのドキュメントフォルダに「PowerShell_transcript.ハッシュ値とタイムスタンプ.log」といった名前でログが出力される。

出力されるログファイルを確認すると、実行したタイムスタンプやユーザーも記録されており、これ一本で随分といい感じのログ出力処理が完成する。

注意点

結果が出力されるのはあくまで「PowerShellコマンドレット」の「結果」だけという点に注意してほしい。

実際のログでは「何の処理を実行したか」や、「DOSコマンドや.NETオブジェクトの処理結果」も記録したいと思うので、下記実装例を足がかりにしてもらえたら良い。

start-transcript;

# 標準出力だけでは何の処理結果か読み取れないため、このようにコメントも出力するとわかりやすい
Write-Output "フォルダ作成 start..." | Out-Default;

# New-Itemコマンドレットでフォルダを作成した結果は自動で出力される
New-Item .\hoge

# DOSコマンドなどを実行する際はOut-Defaultで明示的に結果を出力する必要がある
# この場合はすでNew-Itemでhogeフォルダを作成済なのでエラーが出力される
mkdir .\hoge | Out-Default;

# .NETオブジェクトの処理結果も同様にOut-Defaultが必要となる
$hogeObject = New-Object System.Hoge;
$hogeObject.Value = "ほげほげ";
Write-Output $hogeObject.Value | Out-Default;

stop-transcript;

これはあくまでサンプルです。
あとはそれぞれの用途に応じて効率的に記述してください。

0
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?