Powershell将所有管道连接到日志

Powershell将所有管道连接到日志,powershell,logging,powershell-4.0,Powershell,Logging,Powershell 4.0,我对powershell非常陌生,我希望通过管道将所有行传输到一个输出文件,以便随时间记录日志,但我不希望显式地将所有cmdlet传输到日志文件,以避免视觉混乱,并使代码易于扩展 我不确定现有的方法是否符合我的要求,我只是无法识别它或什么,但任何指针或帮助都将不胜感激。如果您希望捕获PowerShell会话中生成的所有输出(包括其他流,如详细信息或错误消息)您可以在脚本开头使用Start Transcript,在脚本结尾使用Stop Transcript 如果要输出特定的日志条目,请考虑使用写入

我对powershell非常陌生,我希望通过管道将所有行传输到一个输出文件,以便随时间记录日志,但我不希望显式地将所有cmdlet传输到日志文件,以避免视觉混乱,并使代码易于扩展


我不确定现有的方法是否符合我的要求,我只是无法识别它或什么,但任何指针或帮助都将不胜感激。

如果您希望捕获PowerShell会话中生成的所有输出(包括其他流,如详细信息或错误消息)您可以在脚本开头使用
Start Transcript
,在脚本结尾使用
Stop Transcript

如果要输出特定的日志条目,请考虑使用<代码>写入日志< /代码>函数,如这里的一个答案中所描述的:

或者,这里有一个简单的版本可以让您开始:

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
将其定向到详细输出流以及文件。如果通过$VerbosePreference(或通过在脚本中支持-Verbose)启用详细消息,则可以查看详细消息

或者,如果要重定向脚本中的所有输出,而这些输出不是其他消息流(例如,仅发送到标准管道的内容),则可以保存该脚本,从PowerShell中运行该脚本,然后将其输出通过管道传输到另一个命令,如Out File,例如:

.\yourscript.ps1 | Out-File output.txt

谢谢有没有一种众所周知的方法来实现每一行代码的写日志行为,否则这些代码将进入管道,而不将每一行都传递给函数?我想您可以将其保存为脚本,然后从shell执行,并将其输出发送到out文件