Powershell拥有非常强大的容错度。只要你设定好参数,即使某一条,某一行命令执行发生错误,脚本还可以继续执行。例如你在复制一大批文件,大概需要一天时间,在你执行脚本时,你去做其它事情,结果异常发生了,如果脚本不继续执行,那当你一天以后去看结果,还可能有90%的文件没有拷贝,那么这一天的时间就白白浪费了。但是如果脚本出错了继续执行,结果可能就完成了99.99%的工作,只剩下一个文件需要重新拷贝,明显提高了效率。
Remove-Item mossfly.com ; Write-Host "工作完成" Remove-Item : 找不到路径“E:mossfly.com”,因为该路径不存在。 所在位置 行:1 字符: 4 + del <<<< mossfly.com ; Write-Host "工作完成" + CategoryInfo : ObjectNotFound: (E:mossfly.com:String) [Remove-Item], ItemNotFoundE xception + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand
第二条命令没有执行,因为执行发生错误。
自动化变量$ErrorView的默认值为:NormalView,如果将$ErrorView设置为categoryview 异常就会只显示一行,看起来更加清爽,适合专业人士应用奥!
$ErrorView NormalView $ErrorView="categoryview" Remove-Item www.mossfly.com ObjectNotFound: (E:www.mossfly.com:String) [Remove-Item], ItemNotFoundException
不过,Powershell在执行某条命令是也可以指定对错误的处理模式。那就是ErrorAction。
Remove-Item "No this file" -ErrorAction "Continue" ; Write-Host "工作已经完成。" Remove-Item : 找不到路径“E:No this file”,因为该路径不存在。 所在位置 行:1 字符: 12 + Remove-Item <<<< "No this file" -ErrorAction "Continue" ; Write-Host "工作已经完成。" + CategoryInfo : ObjectNotFound: (E:No this file:String) [Remove-Item], ItemNotFound Exception + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand
工作已经完成。
如果将ErrorAction的值设置为默认值Stop,发生错误下面的命令就会终止。
Remove-Item "No this file" -ErrorAction "Stop" ; Write-Host "工作已经完成。" Remove-Item : 找不到路径“E:No this file”,因为该路径不存在。 所在位置 行:1 字符: 12 + Remove-Item <<<< "No this file" -ErrorAction "Stop" ; Write-Host "工作已经完成。" + CategoryInfo : ObjectNotFound: (E:No this file:String) [Remove-Item], ItemNotFound Exception + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand
每次执行命令都去设定ErrorAction那也忒麻烦了。有没有全局的设置呢,那就是$ErrorActionPreference,甚至还可以针对某段函数,某个脚本设置$ErrorActionPreference。
Member name | Description |
Continue | 将错误抛出来,但是脚本会继续往下执行。 |
Ignore | 直接忽略错误,貌似在Powershell 2.0中已经没有了 |
Inquire | 提供选项由用户选择Error Action。 |
SilentlyContinue | 错误不抛出,脚本也会继续执行。 |
Stop | 错误发生时,终止脚本执行 |
本文链接: https://www.pstips.net/powershell-define-fault-tolerance.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!