以前、テキストをファイルに出力する方法をご紹介しました。
今回は、[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
********************** 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 キーを押してください...:
記事は以上になります。
ロガーなどを作成せずに簡単に実行ログを出力させる方法になります。
コメント