当前位置: 首页 > 知识库问答 >
问题:

Powershell用SilentlyContinue捕获非终止性错误

邵奇
2023-03-14

我想捕捉和处理非终止错误,但使用-ErrorAction SilentlyContinue。我知道我需要使用-ErrorAction-Stop来捕获非终止错误。该方法的问题是,我不希望try脚本块中的代码实际停止。我希望它继续,但处理非终止错误。我也希望它保持沉默。这可能吗?也许我走错了方向。

我想处理的非终止性错误的一个例子是从Get-Childitem访问关键字文件夹的拒绝访问错误。这是一个例子。

$getPST = Get-ChildItem C:\ -Recurse -File -Filter "*.PST" 
$pstSize = @()
Foreach ($pst in $getPST)
{
     If((Get-Acl $pst.FullName).Owner -like "*$ENV:USERNAME")
     {
         $pstSum = $pst | Measure-Object -Property Length -Sum      
         $size = "{0:N2}" -f ($pstSum.Sum / 1Kb)
         $pstSize += $size
     }
}
$totalSize = "{0:N2}" -f (($pstSize | Measure-Object -Sum).Sum / 1Kb)

共有1个答案

徐凌
2023-03-14

不能将Try/Catch与ErrorAction SilentlyContinue一起使用。如果希望以静默方式处理错误,请对ErrorAction使用Stop,然后在Catch块中使用Continue关键字,这将使它继续循环处理下一个输入对象:

$getPST = Get-ChildItem C:\ -Recurse -File -Filter "*.PST" 
$pstSize = @()
Foreach ($pst in $getPST)
{
 Try {
      If((Get-Acl $pst.FullName -ErrorAction Stop).Owner -like "*$ENV:USERNAME")
       {
        $pstSum = $pst | Measure-Object -Property Length -Sum      
        $size = "{0:N2}" -f ($pstSum.Sum / 1Kb)
        $pstSize += $size
       }
     }

 Catch {Continue}
}
$totalSize = "{0:N2}" -f (($pstSize | Measure-Object -Sum).Sum / 1Kb)
 类似资料:
  • 我正在使用power shell控制台运行以下power外壳脚本: 这将打印错误。然后继续并打印“创建的新对象”和“结束”。所以我假设这是一个非终结性错误。 但是,如果我将try catch块放在新对象周围,如下所示: 在这种情况下,捕获块被击中并写入异常消息。 我的问题是: < li >这是一个非终止错误吗?这看起来像是一个非终止性错误,因为在错误之后继续执行(当没有try catch块时)。

  • 本文向大家介绍什么是PowerShell中的终止和非终止错误?,包括了什么是PowerShell中的终止和非终止错误?的使用技巧和注意事项,需要的朋友参考一下 Powershell执行脚本或命令时会生成两种类型的错误。终止错误和非终止错误。 终止错误-该错误是由您创建的脚本,函数或命令生成的,并且会停止或停止脚本的执行,从而导致下一行中的命令无法执行。要处理此错误,需要适当的机制,否则将显示错误消

  • 本文向大家介绍浅谈PowerShell 捕获错误,包括了浅谈PowerShell 捕获错误的使用技巧和注意事项,需要的朋友参考一下 之前的文章我们演示了如何使用 Windows PowerShell 构建相当高级的清单工具。我创建的工具提供了多个有关输出的选项,这应归功于外壳的内置功能和将函数应用于对象。 我所创建的函数有一个无可否认的弱点:它不能适度处理可能发生的任何错误(例如连接或权限问题)。

  • 假设我运行了一个带有ErrorAction Stop的命令,它生成了一个错误。我想知道错误最初是否终止?我有ErrorVariable或$Error对象。ErrorVariable能捕捉两种错误吗?我正在寻找一处房产。NET/PowerShell对象,它可以告诉我这个错误正在终止。非终止错误也会产生异常吗? 另外,当我在控制台上写一个命令时(不是ISE也没有运行脚本,只是在控制台上写一个命令),我

  • 问题内容: 我有一个使用套接字,数据库连接之类的过程。从根本上讲,这是一个服务器过程,在传感器数据和Web界面之间进行中继,因此确保应用程序(如果被终止)正常终止很重要。 如何处理诸如segfaults(至少用于调试)之类的意外异常以及kill信号,以便我可以关闭任何连接并停止任何线程的运行,从而使进程不会留下任何正在使用的东西? 问题答案: 您可以安装信号处理程序来捕获信号-但是在99%的情况下

  • 我喜欢认为我很擅长PowerShell,但我在这里有点困惑。 我有一个巨大的文件列表,我将在上面运行此代码,这将给我一些必要的文件信息,我将运行分析。第一步就是获取文件列表。所以我运行这个。 这返回了一堆无用的信息,但也给了我一片红色的海洋。有大量的文件和文件夹无法找到,并明确拒绝我。我想捕获所有这些错误,以便将它们解析为相关信息,因此我的直觉告诉我使用Try/catch。 通常情况下,您使用tr