我正在为服务器安装编写一个大脚本,我希望它是完全自动的,但也希望开发人员能够在它中断时修复它(因为它可能会!)。为此,我想象使用Write-Output,Write-Debug,Write-Verbose,Write-Warning。
如何将所有这些写入写入(并加盖时间戳)到.txt文件?另外,我知道通常Write-Error通常用红色写,但.txt文件中没有颜色。有没有办法帮助区分它们,比如可能给它们所有的写入前缀,如Debug,Warning等?
答案 0 :(得分:6)
哦,来吧!为什么要使用文本文件旧时尚日志记录,在整个操作系统中分散信息,需要由负责生产的人员用镊子收集?
由于PowerShell适用于.NET,您可以使用Even Tracing for Windows(ETW)或使用系统日志。
您可以为所有脚本创建和使用一个PowerShell日志,以便为负责生产的人员发布执行(信息)和错误的详细信息(与良好的异常处理协调)。您可以为一个脚本专用日志(因为它存在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"
答案 1 :(得分:3)
Write-(Error|Debug|Verbose)
不支持写入文件。所以我创建了这个Write-Log函数来解决这个缺点:
一些示例用法:
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