我这样称呼
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
。
使用
-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 $_
}