在RunWithElevatedPrivileges内部时,foreach continue不工作应该怎么解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (28)

下面的代码在出现错误时继续执行,

    foreach($url in Get-Content $urlsDir) 
    {
        try
        {
            // do something
            // declare X
        }
        catch
        {
            // write host or soemthing with exception
            continue
        }
        finally
        {
            // dispose X
        }
    }

但是当我将这段代码放入RunWithElevatedPrivileges时,它会在第一个错误时完全停止,并且不会继续执行,

[Microsoft.SharePoint.SPSecurity]::RunWithElevatedPrivileges({ 
        # Iterate through all webs in a text file
        foreach($url in Get-Content $urlsDir) 
        {
            try
            {
                // do something
                // declare X
            }
            catch
            {
                // write host or soemthing with exception
                continue
            }
            finally
            {
                // dispose X
            }
        }
  });
提问于
用户回答回答于

需要指定在每次调用中发生错误时应该发生的情况,如此

Call-Something $SomeParam -ErrorAction Stop

除非为每个调用或脚本的开始部分指定上面的错误,否则可能会忽略错误。

// at the start of your script
$ErrorActionPreference = "Stop"

根据msdn,这些是有效的值:

Stop:显示调试消息并停止执行。向控制台写入错误。 inquire:显示调试消息并询问您是否要继续。请注意,将Debug公共参数添加到命令(当命令配置为生成调试消息时)会将$ DebugPreference变量的值更改为Inquire。 Continue:显示调试消息并继续执行。 Silently Continue:没有效果。调试消息不是(默认)显示,并且执行继续不中断。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励