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** 块来处理终止错误和非终止错误(通过将其转换为终止错误)。
广告