PowerShellでは、スクリプトの実行内容やコンソールでの操作履歴を記録する機能としてStart-Transcript
コマンドレットが提供されています。
この機能を使用することで、実行結果やエラーを含む全ての出力をテキストファイルに保存することが可能です。Start-Transcript
の基本的な使い方をまとめます。
Start-Transcriptとは?
Start-Transcript
は、PowerShellセッション内での出力をログファイルとして記録するためのコマンドレットです。これを使用することで以下のような場面で役立ちます。
- スクリプトのデバッグやトラブルシューティング
- 実行ログのアーカイブ
- コンプライアンスや監査目的での記録
基本的な使い方
シンプルな実行例
Start-Transcript
を実行すると、自動的にログファイルが作成されます。
Start-Transcript
実行すると、以下のようなメッセージが表示されます。
Transcript started, output file is C:\Users\<ユーザー名>\Documents\PowerShell_transcript.<日時>.txt
この例では、既定の保存先であるユーザーのDocuments
フォルダーにログファイルが作成されます。
ログファイルの保存場所を指定
-Path
オプションを使用すると、保存先を指定できます。
Start-Transcript -Path "C:\Logs\MyLog.txt"
指定したパスにログファイルが保存されます。
実行内容を記録した後に終了
記録を終了するには、Stop-Transcript
を使用します。
Stop-Transcript
終了すると以下のようなメッセージが表示されます。
Transcript stopped, output file is C:\Logs\MyLog.txt
使用例
エラー出力を含めて記録
Start-Transcript
は標準出力だけでなくエラー出力も記録します。
以下のスクリプトを例に確認してみましょう。
Start-Transcript -Path "C:\Logs\ErrorLog.txt"
Write-Output "This is a normal message."
Write-Error "This is an error message."
Stop-Transcript
ログファイルには、通常のメッセージとエラーが両方記録されます。
日時を含む動的なファイル名で記録
以下の例では、実行日時をファイル名に含めてログを保存します。
$timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"
$logPath = "C:\Logs\Transcript_$timestamp.txt"
Start-Transcript -Path $logPath
Write-Output "Logging started at $timestamp"
Stop-Transcript
既存のログファイルに追記
デフォルトでは、Start-Transcript
は既存のファイルを上書きします。
追記モードで記録する場合は、以下のようにリダイレクト演算子を活用します。
$logPath = "C:\Logs\MyLog.txt"
if (-Not (Test-Path $logPath)) {
New-Item -Path $logPath -ItemType File
}
Start-Transcript -Path $logPath -Append
Write-Output "New session logged."
Stop-Transcript
注意点
- 管理者権限
一部の環境では、Start-Transcript
を実行するために管理者権限が必要です。 - セッションの制約
記録は現在のPowerShellセッションに限定されます。セッションが終了すると自動的に記録も終了します。
まとめ
Start-Transcript
は、PowerShellセッションの記録を簡単に行える便利なツールです。特にデバッグや監査において役立つ場面が多く、使い方を習得しておくことで効率的に作業を進めることができます。
主なポイントは以下のとおりです。
Start-Transcript
で記録開始、Stop-Transcript
で記録終了-Path
オプションで保存先やファイル名を指定可能- エラーや標準出力を含む全ての内容を記録