下面的代码在出现错误时继续执行,
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
}
}
});
发布于 2018-05-31 19:41:08
这可能与您是否指定了ErrorAction有关,但我不确定这与try catch有什么关系。我做过类似的事情,除非明确说明,否则我的foreach不会停止。
基本上,您需要指定在每次调用中发生错误时应该发生的情况
Call-Something $SomeParam -ErrorAction Stop
除非您在每次调用时指定它,或者在脚本的开头指定,如下所示,否则错误会被忽略。
// 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:无效。调试消息不会显示(默认),并且继续执行而不会中断。
https://stackoverflow.com/questions/50622342
复制相似问题