写入详细消息不会重定向到Out-File。
我的高级功能失败,没有任何痕迹,所以我想放置调试消息。当脚本执行时,它将无法在控制台中运行,因此我看不到该消息。
如果消息可以传输到日志文件,那么我可以看到它。 Write-debug是否可以将值传递给日志文件?
答案 0 :(得分:7)
如果您正在使用Powershell v3 +,则可以将调试流重定向到文本文件:
示例文件:test.ps1
$debugPreference = "Continue"
Write-Output "Output msg"
Write-Debug "Debug msg"
从powershell命令行:
c:\temp\test.ps1 5>c:\debug.txt
c:\ debug.txt然后显示一行" Debug msg"
细分 5> c:\ debug.txt 有点模糊,所以让我们分解一下。 " 5"表示调试流,它是描述为here和here的第五个内在Powershell流。然后,> c:\ debug.txt告诉它将所有调试输出重定向到文件。
您还可以使用5>& 1,将调试流重定向到普通标准输出。
如果您在Powershell v2中,可以查看提供良好日志记录的this compiled module,或者您可以使用与此类似的here脚本本地函数:
$DebuglogPreference = 'Continue'
function Write-DebugLog
{
param( [string]$message, [string]$filepath = 'c:\debug.txt' )
if ($DebuglogPreference -eq 'Continue')
{
$message | Out-File $filepath -append
}
}
Write-DebugLog "Debug msg"