You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何同时将Get-PnPWeb结果赋值给变量并捕获错误输出?

解决PowerShell中Get-PnPWeb同时赋值变量与捕获错误的问题

可以通过错误流重定向结合类型过滤的方式,同时获取命令结果和捕获错误信息,具体实现如下:

# 捕获Get-PnPWeb的所有输出(包括错误流)
$allOutput = Get-PnPWeb -Connection $pnpConnection -ErrorAction SilentlyContinue 2>&1

# 从输出中分离出Web对象和错误记录
[Microsoft.SharePoint.Client.SecurableObject]$Web = $allOutput | Where-Object { $_ -is [Microsoft.SharePoint.Client.SecurableObject] }
$errorDetails = $allOutput | Where-Object { $_ -is [System.Management.Automation.ErrorRecord] }

# 校验结果并处理错误
if ($null -eq $Web) {
    if ($errorDetails) {
        # 格式化错误信息,可根据需求调整内容
        $formattedError = "访问站点 $($pnpConnection.Url) 失败:$($errorDetails.Exception.Message)(错误代码:$($errorDetails.Exception.HResult))"
        throw $formattedError
    } else {
        throw "无法获取站点信息:$($pnpConnection.Url)"
    }
}

核心要点

  • 2>&1:将错误流(stderr)重定向到标准输出流(stdout),确保所有输出都能被捕获到变量中。
  • 类型过滤:利用-is运算符区分成功返回的SecurableObject对象和错误记录ErrorRecord,实现结果与错误信息的分离。
  • 自定义异常抛出:由于Get-PnPWeb返回403时仅输出非终止错误,不会触发try/catch,因此需要手动检查错误记录并抛出格式化后的异常,让catch块可以捕获处理。

内容的提问来源于stack exchange,提问作者Craig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 12:34:52