本日のお題は「ログ出力」です。
早くプログラミングを開始したいと思う人も多くいるかと思いますが、まだ待ってください!
Windows Powershell ISEで開発しているときはログが出力されるのでそれを見ながら修正ができると思います。しかし、実際に稼働させる時はファイルをPowerShellで実行するだけで特に対策を取っていなければ何事も無かったかのようにウィンドウは閉じてしまいます。
その原因がプログラムにあるのか、その人のパソコン環境にあるのか。
それを教えてくれるのがログなのです。
下記はログ出力方法の例です。
$logPath = "C:\Logs\script_log.txt" # ファイルを出力する場所は自由に変えてください
function Write-Log {
param([string]$message, [string]$level = "INFO")
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
"$timestamp [$level] $message" | Out-File -FilePath $logPath -Append
}
Write-Log -message "スクリプト開始"
# ... 何らかの処理 ...
Write-Log -message "処理が完了しました"
こちらの処理を解説していきます。
$logPath ログファイルを出力する場所を示しています。
function Write-Log こちらは関数といって簡単に紹介すると、同じ処理動作を繰り返し使いたいときに作成するものです。プログラミング以外で例えると「コーヒー豆、水」から「コーヒー」を作るようなものです。
ちなみにここでは、
Write-Log(コーヒー)を作ってくださーい。材料は$message(コーヒー豆), $level(水)でーす。
と言った感じですね。
$timestamp これは日時の情報が入っています。具体的に言うと “2025-08-06 00:30:57” です。
では、実際の処理はどうなっているかというと
Write-Log -message “スクリプト開始”
Write-Log -message “処理が完了しました”
# こちらの処理でscript_log.txtには以下の内容が入ります
2025-08-06 00:30:57 [INFO] スクリプト開始
2025-08-06 00:30:58 [INFO] 処理が完了しました
エラー修正をするためのログというよりは、プログラムを実行してどのタイミングで処理が実行されたかを知るためのカスタムされたログですね。
それではもう一つログ出力の例を出します。
# ログ記録開始
Start-Transcript -Path "C:\logs\powershell_process_log.txt"
# プロセス情報を取得し、$Processに格納
$Process = Get-Process
# ログ記録停止
Stop-Transcript
# ログファイルを確認
# (例: C:\logs\powershell_process_log.txt をテキストエディタで開く)
Start-Transcript, Get-Process, Stop-Transcriptでの処理です。
先ほどよりも少ないコード数になるので手軽さがありますね。
さらにこのログ出力ではPowerShell ISEのようにエラーログがファイルに残ります!
開発者はこのファイルを渡してもらうことでエラー対応ができるので、ぜひ活用してみてください。
コメント