【问题标题】:How do I prevent PowerShell from adding exception data to $error如何防止 PowerShell 将异常数据添加到 $error
【发布时间】:2019-08-09 06:33:12
【问题描述】:

我在一个函数中调用了很多 REST 调用。 我知道其中一些会失败,但这是意料之中的。

我的问题是:

如何防止 powershell 向全局 $error 变量添加条目?

foreach:

$oldErrorActionPreference = $ErrorActionPreference
$ErrorActionPreference = "Ignore"
try {
    $response = Invoke-RestMethod -Uri $Uri -ea Ignore
} catch {
    Write-Verbose "$_"
} finally {
    $ErrorActionPreference = $oldErrorActionPreference
}

$error 调用后的变量:

【问题讨论】:

  • $Error 不存储在 Powershell 会话中发生的所有错误吗?用户$error[0] 查看最新的错误会更安全,然后根据需要慢慢向上移动数组。
  • 你为什么想要?您要解决的问题是什么?
  • @AnsgarWiechers 我正在创建一组核心模块,它们本身必须不泄露给 $global:error。
  • 异常是“预期的” - 因此不是错误。我不喜欢我的代码“接受”的异常状态仍然泄漏到 global:error。这会创建一个重载的 $error,然后再不能用于跟踪和查找真正的“错误”

标签: powershell powershell-5.0 powershell-7.0 powershell-6.0


【解决方案1】:

Invoke-RestMethod cmdlet 总是失败并出现终止错误,它不能是 Ignored — 它总是会在 $Error 列表中结束。

你可以清除它:$Error.Clear()

【讨论】:

猜你喜欢
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2017-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-11
相关资源
最近更新 更多