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生成,并且仅由内部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变量来处理终止和非终止错误(通过将它们转换为终止错误),然后尝试,捕获并最终阻止。