抑制 PowerShell 错误
无论我们是想在错误发生时忽略错误消息还是终止脚本的执行,Windows PowerShell 都有很多选项来处理错误。本文将讨论处理和抑制错误的多种技术。
PowerShell 中的错误操作简介
尽管抑制 Windows PowerShell 错误很容易,但这样做并不总是最好的选择(尽管可以)。如果我们不小心告诉 PowerShell 隐藏错误,它可能会导致我们的脚本行为不可预测。
抑制错误消息还会使故障排除和信息收集变得更加复杂。因此,请小心谨慎地使用你将在本文中看到的以下片段。
在 PowerShell 中使用 -ErrorAction
参数
处理错误的最常用方法是将 -ErrorAction
参数开关附加到 cmdlet。 -ErrorAction
参数开关让 PowerShell 告诉如果 cmdlet 产生错误该怎么做。
命令:
Get-Service 'svc_not_existing' -ErrorAction SilentlyContinue
在上面的命令中,我们正在查询一个不存在的服务。通常,如果服务不存在,PowerShell 会抛出错误。
由于我们使用 -ErrorAction
参数,脚本将按预期继续,就像它没有错误一样。
在 PowerShell 中设置错误操作首选项
如果我们需要脚本以某种方式运行(例如抑制错误),我们可能会考虑设置一些偏好变量。首选项变量充当 PowerShell 的配置设置。
我们可能会使用首选项变量来控制 PowerShell 保留的历史记录项的数量,或者强制 PowerShell 在执行特定操作之前询问用户。
例如,你可以使用首选项变量将整个会话的 -ErrorAction
参数设置为 SilentlyContinue
。
命令:
$ErrorActionPreference = 'SilentlyContinue'
我们可以为 ErrorAction
开关参数指定许多其他错误操作。
Continue
:PowerShell 将显示错误消息,但脚本将继续运行。Ignore
:PowerShell 不产生任何错误消息,在主机上写入任何错误输出,并继续执行。Stop
:PowerShell 将显示错误消息并停止运行脚本。Inquire
:PowerShell 显示错误消息,但如果用户想继续,将首先要求确认。SilentlyContinue
:如果代码不起作用或出现非终止错误,PowerShell 会静默继续执行代码。Suspend
:PowerShell 暂停脚本的工作流程。
如前所述,-ErrorAction
开关必须与 PowerShell cmdlet 结合使用。例如,我们使用 Get-Process
cmdlet 来演示 ErrorAction
开关的工作原理。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn