抑制 PowerShell 错误

Marion Paul Kenneth Mendoza 2023年1月30日 2022年5月16日
  1. PowerShell 中的错误操作简介
  2. 在 PowerShell 中使用 -ErrorAction 参数
  3. 在 PowerShell 中设置错误操作首选项
抑制 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 Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn