可以将Write-debug消息传输到Log文件吗?

时间:2015-05-19 03:59:35

标签: powershell powershell-v2.0

写入详细消息不会重定向到Out-File。

我的高级功能失败,没有任何痕迹,所以我想放置调试消息。当脚本执行时,它将无法在控制台中运行,因此我看不到该消息。

如果消息可以传输到日志文件,那么我可以看到它。 Write-debug是否可以将值传递给日志文件?

1 个答案:

答案 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"表示调试流,它是描述为herehere的第五个内在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"