PS:将赋值语句的错误输出重定向到变量

问题描述 投票:0回答:1

我这样称呼

PnP-GetWeb

    [Microsoft.SharePoint.Client.SecurableObject]$Web = Get-PnPWeb -Connection $pnpConnection -ErrorAction SilentlyContinue
    if($null -eq $web) {
        throw "Could not get information for: $($pnpConnection.Url)"
    }

但是当出现 403“Forbidden”时,它仅将其输出到 stdout。没有抛出异常,并且除非重定向标准输出,否则我看不到捕获该错误信息的方法。看来我需要将其错误输出捕获到变量而不是标准输出,以便我可以在记录错误之前格式化错误。

我可以将错误输出捕获到这样的变量中:

$output = Get-PnpWeb -Connection $pnpConnection 2>&1

但是我如何同时分配 $web 和 $output 呢?

更新:

澄清一下,这段代码已经位于 try/catch 块内。很抱歉没有早点提到这一点。然而,即使没有

SilentlyContinue
,也不会抛出异常。

此外,当标准输出显示 403 时,

Get-PnPWeb
确实会返回
$null

powershell sharepoint error-handling
1个回答
0
投票

使用

 -ErrorVariable
将错误分配到变量中,这是一个示例:

try {
    [Microsoft.SharePoint.Client.SecurableObject]$Web =
        Get-PnPWeb -Connection $pnpConnection -ErrorAction SilentlyContinue -ErrorVariable err
    if($null -eq $web) {
        throw "Could not get information for: $($pnpConnection.Url)"
    }
} catch {
    throw $_
}
if ($err) {
    throw $_
}
© www.soinside.com 2019 - 2024. All rights reserved.