PowerShell 中的终止错误和非终止错误是什么?


Powershell 在执行脚本或命令时会生成两种类型的错误:**终止错误**和**非终止错误**。

**终止错误** - 此错误由您创建的脚本、函数或命令生成,它会停止或中断脚本的执行,从而无法执行下一行中的命令。要处理此错误,需要合适的机制,否则会显示错误消息。

例如:

PS C:\WINDOWS\system32>> This-commandnotexist
This-commandnotexist : The term 'This-commandnotexist' is not recognized as
the name of a
cmdlet, function, script file, or operable program. Check the spelling of the
name, or if a
path was included, verify that the path is correct and try again.
At line:1 char:1
+ This-commandnotexist
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (This-commandnotexist:String)
[], CommandNotFo
undException
+ FullyQualifiedErrorId : CommandNotFoundException

**非终止错误** - 此错误通常由内部 cmdlet 生成,并由它们自动处理,但错误不会终止管道的执行。您无法自动处理此类错误,因为默认情况下 **$ErrorActionPreference** 值为 **Continue**,但可以通过将它们转换为终止错误来处理非终止错误。

在下面的示例中,我们将搜索不存在的计算机上的逻辑磁盘。

PS C:\WINDOWS\system32>> Get-WmiObject -Class Win32_Logicaldisk -ComputerName
Nonexist
Get-WmiObject : The RPC server is unavailable.
At line:1 char:1
+ Get-WmiObject -Class Win32_Logicaldisk -ComputerName Nonexist
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Get-WmiObject],
COMException
+ FullyQualifiedErrorId :
GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiO bjectCommand

上述错误由 cmdlet 生成,它是一个非终止错误。您可以使用 **ErrorAction** cmdlet、**$ErrorActionPreference** 变量和 **try、catch 和 finally** 块来处理终止错误和非终止错误(通过将其转换为终止错误)。

更新于:2020年5月27日

2K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告