gpt4 book ai didi

powershell - 如何查看 PowerShell 事件处理程序中生成的错误消息?

转载 作者:行者123 更新时间:2023-12-04 00:23:20 25 4
gpt4 key购买 nike

通常 PowerShell 错误以红色文本显示在控制台中。你可以使用 Write-Error 'This is an example non-terminating error message.' 测试这个:

red-text error message screenshot

但是,由事件调用的脚本块内的错误不会在控制台上显示相同的错误。该脚本演示了这种现象:

$id='MyTimerEvent'
$timer = New-Object System.Timers.Timer
$n=0

$callback= {
$Script:n++
Write-Host "TIMER: Count $n"
if($n -eq 2){
Write-Host "The next line should be a non-terminating error message."
Write-Error "This is the error message."
}
if($n -gt 3){
Unregister-Event -SourceIdentifier $id
}
}

Register-ObjectEvent -InputObject $timer -SourceIdentifier $id `
-EventName Elapsed -Action $callback

$timer.Interval=500
$timer.AutoReset=$true
$timer.Enabled=$true

脚本的输出如下:

TIMER: Count 1 
TIMER: Count 2
This line should be followed by a a non-terminating error message.
TIMER: Count 3
TIMER: Count 4

请注意来自 Write-Error "This is the error message." 行的输出未显示在控制台中。 PowerShell seems to support the concept of redirecting output但它似乎更适合重定向到文本文件。

如何将 PowerShell 事件处理程序中产生的错误定向到 PowerShell 控制台?

最佳答案

如果您将块的全部内容包装在重定向到 Write-Host 中,它就可以工作。

$callback = {(&{
// ...
}) 2>&1 | Write-Host}

这在内部使用常规(“成功”)流来跟踪所有这些东西,然后将其全部推送到实际控制台,而不是像我期望的事件通常那样将其扔掉。

关于powershell - 如何查看 PowerShell 事件处理程序中生成的错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27414496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com