【问题标题】:PowerShell - Loop through all SharePoint Website & continue when an error occurredPowerShell - 遍历所有 SharePoint 网站并在发生错误时继续
【发布时间】:2014-05-21 14:20:41
【问题描述】:
$ErrorActionPreference = "Continue"
Add-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction "SilentlyContinue"
$webApp = "Https://SharePointSite.com"
$wa = Get-SPWebApplication -identity $webApp
foreach ($site in $wa.Sites) {
   foreach ($web in $site.AllWebs) {
       $siteURL = $web.Url
     Write-Host $siteURL
   }
}

问题是当它遇到语句foreach($site in $wa.Sites)时,由于访问被拒绝或任何错误而无法获取站点,它会停止。我想继续。我尝试尝试最终捕获,但遇到错误时仍然停止。

我尝试输入 -ErrorAction Continue,但它给了我一条错误消息 您必须在“-”运算符的右侧提供一个值表达式

我如何绕过它以使其继续访问该站点?

非常感谢您的帮助。 谢谢

【问题讨论】:

  • 不清楚是哪一步产生了错误。您能否发布确切的错误消息?另外,您在哪里尝试“输入-ErrorAction Continue”? Get-SPWebApplication 命令?您可以发布带有 try/catch/finally 的版本以及错误消息吗?顺便说一句,要格式化代码块,请将整个代码块缩进 4 个空格(您可以选择它并单击 {} 符号),而不是在每一行周围放置反引号(用于内联代码)。通过添加 > 作为第一个字符,为错误消息使用块引号。

标签: sharepoint powershell


【解决方案1】:

如果你想使用try..catch,那么你必须抛出终止错误。 try..catch 块不会处理非终止错误。

try {
    Add-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction Stop;
    $webApp = "Https://SharePointSite.com"
    $wa = Get-SPWebApplication -identity $webApp -ErrorAction Stop;
    foreach ($site in $wa.Sites) {
       foreach ($web in $site.AllWebs) {
           $siteURL = $web.Url
         Write-Host $siteURL
       }
    }
}
catch {
    Write-Host -Object ('Error occurred: {0}' -f $_);
}

【讨论】:

  • 感谢 Trevor 的 Try/Catch 错误捕获块。我也终于有了。我在打开网站时收到的错误消息是调用目标已抛出异常。 +categoryInfo:未指定:(:) [],TargetInvocationException。 +FullyQuaflifiedErrorID:System.Reflection.TargetInvocationException。我收到此错误的原因是运行脚本的 ID 无权访问此站点。但我希望这个过程继续下去。我可以稍后解决这个问题。我在以下位置添加了 ErrorAction Continue:
  • foreach ($web in $site.AllWebs -ErrorAction Continue)
猜你喜欢
  • 1970-01-01
  • 2021-05-24
  • 2021-03-20
  • 2016-12-07
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多