PowerShell脚本trap语句捕获异常写法实例

所属分类: 脚本专栏 / PowerShell 阅读数: 788
收藏 0 赞 0 分享

先看一个脚本文件:3.three.test.ps1

复制代码 代码如下:

Get-FanBingbing #命令不存在

然后这样捕获:
复制代码 代码如下:

trap [exception]
{
 '在trap中捕获到脚本异常'
 $_.Exception.Message
 continue
}
.\3.three.test.ps1

异常捕获成功,输出:
复制代码 代码如下:
在trap中捕获到脚本异常
The term 'Get-FanBingbing' is not recognized as the name of a cmdlet

接下来我把3.three.test.ps1脚本文件的内容改成:
复制代码 代码如下:
dir D:\ShenMaDoushiFuYun #目录不存在

再运行,这时没有捕获到异常,错误为:dir : Cannot find path ‘D:\ShenMaDoushiFuYun' because it does not exist.

于是我想是不是因为终止错误与非终止错误的区别:所以还写了try catch捕获语句,双管齐下:

复制代码 代码如下:

trap [exception]
{
 '在trap中捕获到脚本异常'
 $_.Exception.Message
 continue
}
try{
.\3.three.test.ps1
}
catch{
 '在catch中捕获到脚本异常'
 $_.Exception.Message
}

异常仍旧:dir : Cannot find path ‘D:\ShenMaDoushiFuYun' because it does not exist.

看来问题不在这里。事实上是ErrorActionReference的问题,这样改就OK啦:

复制代码 代码如下:

trap [exception]
{
 '在trap中捕获到脚本异常'
 $_.Exception.Message
 continue
}
$ErrorActionPreference='stop'
.\3.three.test.ps1

输出为:
复制代码 代码如下:

在trap中捕获到脚本异常
Cannot find path 'D:\ShenMaDoushiFuYun' because it does not exist.

简单分析:
像Get-FanBingbing这样的异常,是因为命令不存在,确切来讲属于语法错误,级别比较高被trap到了。但是像目录找不到这样的异常,相对而言级别比较低,默认不能捕获到,除非显示指定ErrorAction为stop。

更多精彩内容其他人还在看

PowerShell Out-File禁止覆盖文件的方法

这篇文章主要介绍了PowerShell Out-File禁止覆盖文件的方法,只要加一个NoClobber参数即可,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell Out-File向只读文件写入内容的方法

这篇文章主要介绍了PowerShell Out-File向只读文件写入内容的方法,只需要加一个-Force参数即可,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell Out-File指定文件编码的方法

这篇文章主要介绍了PowerShell Out-File指定文件编码的方法,例如怎样创建一个UTF-8编码的文件,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell Out-File追加字符串到文件末尾的方法

这篇文章主要介绍了PowerShell Out-File追加字符串到文件末尾的方法,只要加一个-Append参数即可实现追加内容需求,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell中使用Out-File把字符串或运行结果保存到文件的方法

这篇文章主要介绍了PowerShell中使用Out-File把字符串或运行结果保存到文件的方法,重点在于Out-File命令的使用方法上,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell面向对象编程基础知识总结

这篇文章主要介绍了PowerShell面向对象编程基础知识总结,本文着重讲解面向对象的一些概念,又给出了Get-Member命令输出类的属性和方法的例子,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell中调用.NET对象的静态方法、静态属性和类方法、类属性例子

这篇文章主要介绍了PowerShell中调用.NET对象的静态方法、静态属性和类方法、类属性例子,即PowerShell中如何使用.NET对象的一些方法,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell中的变量基础知识介绍

这篇文章主要介绍了PowerShell中的变量基础知识介绍,本文的知识点是需要牢记的,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell获取系统环境变量的方法

这篇文章主要介绍了PowerShell获取系统环境变量的方法,本文讲解了列出所有的环境变量的方法和获取环境变量的值的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell中定义多行字符串变量的方法

这篇文章主要介绍了PowerShell中定义多行字符串变量的方法,本文介绍PowerShell中如何定义一个跨多行的字符串变量,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多