Powershell记录错误

时间:2015-06-11 22:48:49

标签: powershell

我有一个简单的脚本来删除文件,我知道它可能更强大,但这里是

$LogFile = ".\deleteRegPol.log"

try
{
    Remove-Item "c:\test\new text document.txt" -force
    Add-Content $LogFile -Value "We ran the command"
}
catch [Exception]
{
    Add-Content $LogFile -Value $_
}
finally
{
}

当我尝试删除的文件不存在时,我在命令行上收到错误,但在我的日志文件中,它表示该命令已运行。这告诉我没有抛出异常导致流进入catch块。为什么不呢?

2 个答案:

答案 0 :(得分:2)

ErrorAction开关添加到Remove-Item命令:

Remove-Item "c:\test\new text document.txt" -force -ErrorAction Stop

这里有很好的错误处理方法:

  

http://blogs.msdn.com/b/kebab/archive/2013/06/09/an-introduction-to-error-handling-in-powershell.aspx

答案 1 :(得分:2)

当出现错误时,PowerShell通常不会抛出异常。而是将记录写入错误流,您可以重定向。要强制它抛出,有两种选择。一种是将全局错误首选项设置为停止:

$ErrorActionPreference = "Stop"

另一种是将ErrorAction参数设置为停止。这对于接受所谓的公共参数的cmdlet是支持的,Remove-Item会执行以下操作:

Remove-Item "c:\test\new text document.txt" -force -EA "Stop"

要重定向错误流,请使用代码2:

Remove-Item "c:\test\new text document.txt" -Force 2>> $LogFile

这会将错误附加到日志文件中。如果您的选项是"停止"则记录不会写入错误流。然而。它只包含在抛出的异常中。

相关问题