Powershellで実行コマンドのログを取得する方法

Powershell Powershell

TeraTermなどでは実行したコマンドやコマンドの結果などをログとして保存する機能がありますが、Powershellにも同じようにログを保存するトランスクリプト機能があります

今回はそのPowershellにおけるトランスクリプトを試してみました。

広告

Powershell実行経過をログとして保存する方法

以下のコマンドを実行して、特定の保存先に保存させます。

Start-Transcript C:\hogehoge\log.txt

上記では絶対パスを指定して、ユーザのデスクトップ上の「log.txt」というファイルにログを吐き出すようにしています。

もちろん相対パスでも実行可能です。
その場合はカレントディレクトリ上にあるファイル、もしくは指定したファイルを新規作成してログを保存します。

ログの保存を終了したいときは以下のコマンドを実行して止めます。

Stop-Transcript

以降はこのトランスクリプト機能を利用してみて気づいたことを紹介していきます。

トランスクリプト機能を利用して気づいたこと

ログはコマンドの行しか記録されない

コマンドを入力する際にログの見やすくするために Enter キーなどを利用して行間を空けることがあるかと思いますが、このトランスクリプト機能では実行したコマンドの行と、その結果しか表示されません。

以下の結果を見るとわかりやすいと思います。

・Powershell コンソールの画面

Powershell コンソールの画面

Powershell コンソールでは、hostname コマンドと dir コマンドの間に3行ほど間を空けています。

・保存されたログの内容

保存されたログの内容

このように、保存されたログの中には実行したコマンドの行と、その結果しか表示されません。

TeraTermに慣れている人からしてみると少し違和感がありますね。

広告

既存のログに追記したい場合には「-append」オプションを利用する

既存のログに追記したい場合には「-append」オプションを利用することで追記することができます

Start-Transcript C:\hogehoge\log.txt -append

当たり前ですが、「-append」オプションを利用せずに同じファイルを「Start-Transcript」で指定すると、以前の内容が上書きされます。

広告

ssh後のログも取得可能

Powershell 上で ssh 接続を実行してリモートの端末を操作した場合の ssh 先のコマンドの実行ログも取得することができます。

以下の赤枠で囲んでいる箇所が ssh ログイン後のコマンド実施のログですが、
「TestVmLinux」という端末にログイン後に実行しているコマンドもトランスクリプトのログとして出力されたことが確認できます。

「TestVmLinux」という端末にログイン後に実行しているコマンドもトランスクリプトのログとして出力されたことが確認できる

さいごに

Powershell で ssh のログも取得できるのは大きな発見でした。

Powershell っていろんなことできるんだな、と改めて思い知らされました。^^

タイトルとURLをコピーしました