Powershell 管道全部记录
Powershell pipe all to log
我是 powershell 的新手,我希望将所有行通过管道传输到一个输出文件以便记录时间,但我宁愿不将所有 cmdlet 明确地通过管道传输到日志文件以避免视觉混乱并使代码易于扩展。
我不确定现有方法是否能满足我的要求,我只是无法识别它或什么,但任何指示或帮助将不胜感激。
如果您想捕获 PowerShell 会话中生成的所有输出(包括其他流,例如详细信息或错误消息),您可以在脚本开头使用 Start-Transcript
和 Stop-Transcript
最后。
如果您想输出特定的日志条目,请考虑使用 Write-Log
函数,如此处的答案之一所述:Create Log File in Powershell
或者这是一个简单的入门版本:
function Write-Log {
Param(
$Message,
$Path = "$env:USERPROFILE\log.txt"
)
function TS {Get-Date -Format 'hh:mm:ss'}
"[$(TS)]$Message" | Tee-Object -FilePath $Path -Append | Write-Verbose
}
Write-Log 'Some message'
这会在消息的开头添加时间戳,并通过 Tee-Object
将其定向到 Verbose 输出流和文件。然后,如果您通过 $VerbosePreference(或通过在脚本中支持 -Verbose)启用它们,您可以看到 Verbose 消息。
或者,如果您想要重定向不是其他消息流的脚本的所有输出(例如,只是发送到标准管道的内容),您可以保存脚本,运行 它来自 PowerShell然后将其输出通过管道传输到另一个命令,例如 Out-File,例如:
.\yourscript.ps1 | Out-File output.txt
我是 powershell 的新手,我希望将所有行通过管道传输到一个输出文件以便记录时间,但我宁愿不将所有 cmdlet 明确地通过管道传输到日志文件以避免视觉混乱并使代码易于扩展。
我不确定现有方法是否能满足我的要求,我只是无法识别它或什么,但任何指示或帮助将不胜感激。
如果您想捕获 PowerShell 会话中生成的所有输出(包括其他流,例如详细信息或错误消息),您可以在脚本开头使用 Start-Transcript
和 Stop-Transcript
最后。
如果您想输出特定的日志条目,请考虑使用 Write-Log
函数,如此处的答案之一所述:Create Log File in Powershell
或者这是一个简单的入门版本:
function Write-Log {
Param(
$Message,
$Path = "$env:USERPROFILE\log.txt"
)
function TS {Get-Date -Format 'hh:mm:ss'}
"[$(TS)]$Message" | Tee-Object -FilePath $Path -Append | Write-Verbose
}
Write-Log 'Some message'
这会在消息的开头添加时间戳,并通过 Tee-Object
将其定向到 Verbose 输出流和文件。然后,如果您通过 $VerbosePreference(或通过在脚本中支持 -Verbose)启用它们,您可以看到 Verbose 消息。
或者,如果您想要重定向不是其他消息流的脚本的所有输出(例如,只是发送到标准管道的内容),您可以保存脚本,运行 它来自 PowerShell然后将其输出通过管道传输到另一个命令,例如 Out-File,例如:
.\yourscript.ps1 | Out-File output.txt