TeraTermなどでは実行したコマンドやコマンドの結果などをログとして保存する機能がありますが、Powershellにも同じようにログを保存するトランスクリプト機能があります。
今回はそのPowershellにおけるトランスクリプトを試してみました。
Powershell実行経過をログとして保存する方法
以下のコマンドを実行して、特定の保存先に保存させます。
Start-Transcript C:\hogehoge\log.txt
上記では絶対パスを指定して、ユーザのデスクトップ上の「log.txt」というファイルにログを吐き出すようにしています。
もちろん相対パスでも実行可能です。
その場合はカレントディレクトリ上にあるファイル、もしくは指定したファイルを新規作成してログを保存します。
ログの保存を終了したいときは以下のコマンドを実行して止めます。
Stop-Transcript
以降はこのトランスクリプト機能を利用してみて気づいたことを紹介していきます。
トランスクリプト機能を利用して気づいたこと
ログはコマンドの行しか記録されない
コマンドを入力する際にログの見やすくするために Enter キーなどを利用して行間を空けることがあるかと思いますが、このトランスクリプト機能では実行したコマンドの行と、その結果しか表示されません。
以下の結果を見るとわかりやすいと思います。
・Powershell コンソールの画面
Powershell コンソールでは、hostname コマンドと dir コマンドの間に3行ほど間を空けています。
・保存されたログの内容
このように、保存されたログの中には実行したコマンドの行と、その結果しか表示されません。
TeraTermに慣れている人からしてみると少し違和感がありますね。
既存のログに追記したい場合には「-append」オプションを利用する
既存のログに追記したい場合には「-append」オプションを利用することで追記することができます。
Start-Transcript C:\hogehoge\log.txt -append
当たり前ですが、「-append」オプションを利用せずに同じファイルを「Start-Transcript」で指定すると、以前の内容が上書きされます。
ssh後のログも取得可能
Powershell 上で ssh 接続を実行してリモートの端末を操作した場合の ssh 先のコマンドの実行ログも取得することができます。
以下の赤枠で囲んでいる箇所が ssh ログイン後のコマンド実施のログですが、
「TestVmLinux」という端末にログイン後に実行しているコマンドもトランスクリプトのログとして出力されたことが確認できます。
さいごに
Powershell で ssh のログも取得できるのは大きな発見でした。
Powershell っていろんなことできるんだな、と改めて思い知らされました。^^