我正在为服务器安装编写一个大脚本,我希望它是全自动的,但也希望开发人员能够在它中断时修复它(因为它可能会!)。为此,我想象使用 Write-Output、Write-Debug、Write-Verbose、Write-Warning。
如何将所有这些写入(和时间戳)写入 .txt 文件?另外,我知道通常 Write-Error 通常用红色书写,但 .txt 文件中没有颜色。有没有办法帮助区分它们,比如给它们一个所有写入的前缀,比如调试、警告等?
我正在为服务器安装编写一个大脚本,我希望它是全自动的,但也希望开发人员能够在它中断时修复它(因为它可能会!)。为此,我想象使用 Write-Output、Write-Debug、Write-Verbose、Write-Warning。
如何将所有这些写入(和时间戳)写入 .txt 文件?另外,我知道通常 Write-Error 通常用红色书写,但 .txt 文件中没有颜色。有没有办法帮助区分它们,比如给它们一个所有写入的前缀,比如调试、警告等?
哦,来吧!为什么要使用文本文件老式日志记录,将信息分散在整个操作系统中,并且需要由负责生产的人员用镊子收集?
由于 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"
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