首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在RunWithElevatedPrivileges内时,foreach continue不起作用

在RunWithElevatedPrivileges内时,foreach continue不起作用
EN

Stack Overflow用户
提问于 2018-05-31 18:38:27
回答 1查看 331关注 0票数 0

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

代码语言:javascript
复制
    foreach($url in Get-Content $urlsDir) 
    {
        try
        {
            // do something
            // declare X
        }
        catch
        {
            // write host or soemthing with exception
            continue
        }
        finally
        {
            // dispose X
        }
    }

但是当我把这段代码放到RunWithElevatedPrivileges中时,它会在第一次出错时完全停止,不会继续执行,

代码语言:javascript
复制
[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
            }
        }
  });
EN

回答 1

Stack Overflow用户

发布于 2018-05-31 19:41:08

这可能与您是否指定了ErrorAction有关,但我不确定这与try catch有什么关系。我做过类似的事情,除非明确说明,否则我的foreach不会停止。

基本上,您需要指定在每次调用中发生错误时应该发生的情况

代码语言:javascript
复制
Call-Something $SomeParam -ErrorAction Stop

除非您在每次调用时指定它,或者在脚本的开头指定,如下所示,否则错误会被忽略。

代码语言:javascript
复制
// at the start of your script
$ErrorActionPreference = "Stop"

要了解更多信息,可以阅读powershell中的ErrorAction,例如https://blogs.msdn.microsoft.com/kebab/2013/06/09/an-introduction-to-error-handling-in-powershell/

根据msdn的说法,以下是有效值:

停止:显示调试消息并停止执行。向控制台写入错误。

查询:显示调试消息并询问您是否要继续。请注意,将Debug公共参数添加到命令中时--当命令配置为生成调试消息时--会将$DebugPreference变量的值更改为Inquire。

继续:显示调试消息并继续执行。

SilentlyContinue:无效。调试消息不会显示(默认),并且继续执行而不会中断。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50622342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档