如何让Powershell脚本在遇到错误时通知我?[closed]

3qpi33ja  于 2022-12-13  发布在  Shell
关注(0)|答案(1)|浏览(142)

已关闭。此问题需要更多focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

19天前关闭。
Improve this question
我有一个Powershell,每天早上在公司的服务器上运行(使用任务调度程序)。我注意到,当我手动运行它时,它偶尔会遇到错误并给出错误信息,但是由于我在早上别人进入办公室之前运行了它,所以我目前无法查看它是否正确运行。理想情况下,我希望它向我发送一封包含控制台日志文本的电子邮件(或者任何其他提供错误描述的东西,如果有人有更好的主意的话)。如果它只是将控制台日志保存到一个文本文件中,只要我以后可以检查它,我也会很好。有人能帮忙吗?

68bkxrlz

68bkxrlz1#

没有看到你的脚本代码,很难确定。但是,你知道/熟悉内置的$Error变量吗?这可能就是你要找的。
https://bobcares.com/blog/powershell-error-clear/
$Error.Count -它检查当前列表中的错误数。
$Error[0] -它提供有关最新错误的信息。
$Error.Clear()-它从列表中删除所有错误。
您可以修改脚本,首先使用$Error.Clear()清除变量,然后运行代码,最后检查$Error.Count,如果大于零,则检查$Error[0],并将错误记录到日志中。
但同样,这完全取决于您的脚本代码。如果您的脚本正在执行外部/非PowerShell命令,那么我不确定这些错误是否会被捕获到这个变量中。
如果这还不能满足您的需求,那么请看看这个:
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.host/start-transcript?view=powershell-7.3
Start-Transcript-这会将写入控制台的所有内容记录到文件中。
Stop-Transcript-这显然会停止录制。
示例

PS C:\Users\smith\Documents> Start-Transcript
Transcript started, output file is C:\Users\smith\Documents\PowerShell_transcript.NEWT.v842NPjk.20221122174909.txt
PS C:\Users\smith\Documents>

或指定您自己的路径

PS C:\Users\smith\Documents> Start-Transcript -Path .\PST.txt
Transcript started, output file is .\PST.txt
PS C:\Users\smith\Documents>

有用的参数

-NoClobber将防止覆盖现有文件。
-Append将附加到现有文件。

相关问题