【PowerShell】作業ログの取得[Start-Transcript]


この記事はプロモーションを含みます。

PowerShell

ホーム > PowerShell 逆引きリファレンス

以前、テキストをファイルに出力する方法をご紹介しました。
今回は、[Start-Transcript]を使用して作業ログを取得(出力)する方法を解説します。

作業ログ取得の開始と終了

PowerShellでは、以下のコマンドを使用することで、作業ログを取得するタイミングを制御することが可能です。

作業ログの取得開始

Start-Transcript

作業ログの取得終了

Stop-Transcript

サンプルと実行結果

サンプルのソースコードになります。

Start-Transcript

Write-Host "あいうえお"
Write-Host "かきくけこ"
Write-Host "さしすせそ"

Stop-Transcript

こちらを実行すると、下記のようにログファイルが出力されます。
格納パス:C:\Users\{ユーザー名}\Documents
ファイル名:PowerShell_transcript.{PC名}.{***}.YYYYMMDDhhmmss.txt

ログの出力先は下記のコマンドで取得出来るパスになります。

echo $env:UserProfile\Documents
**********************
Windows PowerShell トランスクリプト開始
開始時刻: 20220202130459
ユーザー名: **********
RunAs ユーザー: **********
構成名: 
コンピューター: **********
ホスト アプリケーション: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & '**********'
プロセス ID: 69720
PSVersion: 5.1.19041.1320
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.19041.1320
BuildVersion: 10.0.19041.1320
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
トランスクリプトが開始されました。出力ファイル: C:\Users\****\Documents\PowerShell_transcript.****.****.20220202130459.txt
あいうえお
かきくけこ
さしすせそ
**********************
Windows PowerShell トランスクリプト終了
終了時刻: 20220202130459
**********************

ログの出力先を変更する

ログの出力先を変更する方法です。
併せて使用可能なオプションについても解説しています。

上書き

ログの出力先を変更する場合は、「-Path {出力先パス\ファイル名}」と記述します。
サンプルでは、黄色の文字列になります。

同名のファイルが既に存在する場合は上書きされます。

Start-Transcript -Path C:\work\ps1.log

Write-Host "あいうえお"
Write-Host "かきくけこ"
Write-Host "さしすせそ"

Stop-Transcript

追記

ログの出力先を変更しつつ、追記する場合は、「-Append -Path {出力先パス\ファイル名}」と記述します。
サンプルでは、黄色の文字列になります。

Start-Transcript -Append -Path C:\work\ps1.log

Write-Host "あいうえお"
Write-Host "かきくけこ"
Write-Host "さしすせそ"

Stop-Transcript

出力するログが存在する場合はエラー

出力するログファイルが既に存在する時にエラーとする場合は、「-NoClobber -Path {出力先パス\ファイル名}」と記述します。
サンプルでは、黄色の文字列になります。
また、エラー内容を確認できるよう、最後に「Pause」を入れています。

Start-Transcript -NoClobber -Path C:\work\ps1.log

Write-Host "あいうえお"
Write-Host "かきくけこ"
Write-Host "さしすせそ"

Stop-Transcript

Pause

下記が既にファイルが存在する場合のエラー内容になります。

Start-Transcript : ファイル C:\work\ps1.txt は既に存在しますが、NoClobber が指定されました。
発生場所 C:\work_module\blog.ps1:3 文字:1
+ Start-Transcript -NoClobber -Path C:\work\ps1.txt
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceExists: (C:\work\ps1.txt:String) [Start-Transcript], UnauthorizedAccessException
    + FullyQualifiedErrorId : NoClobber,Microsoft.PowerShell.Commands.StartTranscriptCommand

あいうえお
かきくけこ
さしすせそ
Stop-Transcript : トランスクリプションの停止中にエラーが発生しました: ホストは現在トランスクリプト化していません。
発生場所 C:\work_module\blog.ps1:9 文字:1
+ Stop-Transcript
+ ~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Stop-Transcript]、PSInvalidOperationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.StopTranscriptCommand

続行するには、Enter キーを押してください...:

記事は以上になります。
ロガーなどを作成せずに簡単に実行ログを出力させる方法になります。

コメント

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