1

私はサーバー インストール用の大きなスクリプトを書いています。それを完全に自動化したいのですが、壊れた場合は開発者が修正できるようにしたいと考えています (おそらくそうなるからです!)。これを行うには、Write-Output、Write-Debug、Write-Verbose、Write-Warning を使用することを想像します。

これらのすべての書き込みを .txt ファイルに書き込む (そしてタイムスタンプを付ける) にはどうすればよいですか? また、通常、Write-Error は通常赤で書かれていることは知っていますが、.txt ファイルには色がありません。とにかく、デバッグ、警告などのすべての書き込みにプレフィックスを付けるなど、それらを区別するのに役立つ方法はありますか?

4

2 に答える 2

6

ああ、さあ!オペレーティングシステム全体に情報を分散させ、制作担当者がピンセットで収集する必要があるテキストファイルの昔ながらのログを使用するのはなぜですか?

PowerShellは.NETで動作するため、Even Tracing for Windows(ETW)を使用するか、システムログを使用できます。

すべてのスクリプトに対して1つのPowerShellログを作成して使用し、本番担当者の実行(情報)とエラー(適切な例外処理と連携して)の詳細を公開できます。1つのスクリプト専用のログを作成できます(DNSなどのログが存在するため)

次に例を示します(PowerShell V2には独自のCmdLetsがあります):

# List of logs
Get-EventLog -list

# Creating your own log
New-EventLog -LogName "SlxScripting" -Source "MaSource"

# List of logs
Get-EventLog -list

# Writting in your own log
Write-EventLog -LogName "SlxScripting" -EventId 12 `
               -Message "Mon Message" 
               -Source "MaSource" -EntryType Warning

# Reading (consuming) in your own log
Get-EventLog -LogName "SlxScripting"  

# Suppressing your log (if needed)
Remove-EventLog -LogName "SlxScripting"
于 2012-06-07T04:58:13.993 に答える
3

Write-(Error|Debug|Verbose)残念ながら、ファイルへの書き込みはサポートしていません。そこで、この欠点に対処するために、この Write-Log 関数を作成しました。

http://poshcode.org/3270

いくつかの使用例:

Write-Log -Message "It's all good!" -Path C:\MyLog.log -Clobber -EventLogName 'Application'
Write-Log -Message "Oops, not so good!" -Level Error -EventID 3 -Indent 2 -EventLogName 'Application' -EventSource "My Script"
Write-Log -Message "Just another example" -Level Warn
于 2012-06-07T01:32:48.673 に答える