目录

1、什么是高级参数

2、Verbose 参数

3、Debug参数

4、ErrorAction 参数

5、总结


今天给大家讲解PowerShell Cmdlet高级参数相关的知识,希望对大家学习PowerShell能有所帮助!

1、什么是高级参数

所谓的高级参数就是针对那些可以完成执行命令之外还可以提供其他高级功能的参数(比如显示执行命令的信息、针对错误信息的处理方式、命令出现警告情况的处理方式等等)。使用较多的是New、Set、Remove等动词命令支持高级参数的命令方式。下面给大家逐一介绍这些高级参数。

2、Verbose 参数

Verbose 参数主要用来显示函数执行过程中通过Write-Verbose写入的相关信息,如果命令执行当中有写入则会有反馈信息输出,反之则没有任何信息输出。

输入如下命令

get-childitem
get-childitem -verbose

PowerShell系列(十一):PowerShell Cmdlet高级参数介绍(一)-LMLPHP

可以看到两者输出的信息是一样的,表明函数执行过程没有写入相关信息。

再执行创建文件命令

PowerShell系列(十一):PowerShell Cmdlet高级参数介绍(一)-LMLPHP

额外输出信息

详细信息: 正在目标“目标: D:\logs\端午节2.txt”上执行操作“创建文件”。

总结:针对获取操作的命令函数执行过程一般没有写入相关信息。对应操作命令函数(新建、修改、删除)一般都会有信息写入。

3、Debug参数

Debug参数主要用来显示函数执行过程中通过Write-Debug写入的相关信息,该参数默认是不启用的,需要通过执行命令当中增加 -Debug 参数来启用。

和Verbose类似,如果没有相应的调试信息输出,也不会输出任何信息,如果开启该参数后,命令执行过程中涉及到参数调试,输出的结果都会停下来等待人为干预是否执行下一步。这个和程序员平常的代码调试比较相似,只是不能一次性看到所以的执行代码罢了。

具体如下图

创建一个文件,增加-debug 参数会有确认提示,反之则没有。

PS D:\logs> remove-item 端午节2.txt -debug

确认
是否确实要执行此操作?
正在目标“D:\logs\端午节2.txt”上执行操作“删除文件”。
[Y] 是(Y)  [A] 全是(A)  [N] 否(N)  [L] 全否(L)  [S] 暂停(S)  [?] 帮助 (默认值为“Y”): y
PS D:\logs> new-item 端午节2.txt


    目录: D:\logs


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         2023/6/24      7:23              0 端午节2.txt


PS D:\logs> remove-item 端午节2.txt

PowerShell系列(十一):PowerShell Cmdlet高级参数介绍(一)-LMLPHP

4、ErrorAction 参数

ErrorAction 参数主要用来指定命令和脚本执行出现错误后的操作,对于PowerShell环境全局默认使用ErrorActionPreference参数指定出现错误后的操作,我们可以通过ErrorAction参数覆盖默认的参数,从而满足我们的使用要求。

ErrorAction 针对出错命令提供的操作方式

  • Continue:错误信息记录到$Error变量,命令继续往下执行。
  • Ignore:忽略错误继续往下执行,并且不记录错误信息。
  • Inquire:执行报错后,询问用户是否继续执行,错误信息会记录到$Error变量。
  • SlientContinue:命令执行出错,既不停止执行也不显示错误信息,错误信息也会被记录到$Error变量。
  • Stop:命令执行出错立即停止执行,不会继续执行后续代码。

下面举个例子,这里来删除一个不存在的文件

首先执行

remove-item 端午节2.txt -ErrorAction Ignore

因为这里指定的是Ignore参数,不会输出错误信息也不会记录到$Error变量里面去。

然后再执行

remove-item 端午节2.txt -ErrorAction Continue

输出如下错误信息

remove-item : 找不到路径“D:\logs\端午节2.txt”,因为该路径不存在。
所在位置 行:1 字符: 1
+ remove-item 端午节2.txt -ErrorAction Continue
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (D:\logs\端午节2.txt:String) [Remove-Item], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand

再执行$Error命令

$Error

输出了错误信息

remove-item : 找不到路径“D:\logs\端午节2.txt”,因为该路径不存在。
所在位置 行:1 字符: 1
+ remove-item 端午节2.txt -ErrorAction Continue
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (D:\logs\端午节2.txt:String) [Remove-Item], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand

具体执行可以查看如下截图

PowerShell系列(十一):PowerShell Cmdlet高级参数介绍(一)-LMLPHP

当然其他情况大家可以自己动手操作试试看!下篇文章会继续介绍另外的高级参数。

5、总结

PowerShell Cmdlet高级参数属于学习PowerShell非常重要的基础知识,对于后续的运维非常关键,大家需要多多练习,加深理解。

09-28 02:52