今天给大家讲解PowerShell Cmdlet参数相关的知识,希望对大家学习PowerShell能有所帮助!
Cmdlet参数是进行执行操作、获取数据中的属性定义,然后根据属性定义获取对应属性的结果和执行对应的操作。根据类型的使用场景主要划分下面四种参数类型。
一、强制类型参数
使用频率最高,主要用于特定属性的定义。
强制类型参数使用比较频繁,基本上涉及新建、更新、配置等命令都需要针对特定的对应进行操作,所有需要强制输入一个参数来确认操作的对象是谁。
比如新建一个文件的时候,需要指定文件名,这个时候文件名就是强制类型参数,如果没有指定文件名,执行命令就会报错。
比如下面的例子
我们打开PowerShell,然后输入 New-Item 命令
会提示
代码语言:javascript复制位于命令管道位置 1 的 cmdlet New-Item
请为以下参数提供值:
Path[0]:
这个时候我们不输入参数,直接点击回车按钮,会提示如下错误
代码语言:javascript复制New-Item : 无法将参数绑定到参数“Path”,因为该参数为空数组。
所在位置 行:1 字符: 1
New-item
~~~~~~~~
CategoryInfo : InvalidData: (:) [New-Item],ParameterBindingValidationException
FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyArrayNotAllowed,Microsoft.PowerShell.Commands.NewIt
emCommand
接着我们重新输入New-item 命令,然后输入参数:test0622.txt ,然后点击回车按钮,然后第二个参数我们不进行输入,之金额点击回车按钮,则没有报错,文件正常创建成功。
这个可以说明:第一个参数是强制输入参数,第二个参数非强制输入参数。
具体可以看下面的截图。
二、Named类型的命名参数
Named类型的命名参数是进行相关属性设置的必要参数。
比如执行如下命令:
代码语言:javascript复制 New-Item -name test0622new.txt -path d:log -itemtype file
参数说明
-name :指定对象名称,本次就是文件名 test0622new.txt
-path:指定文件存储路径,d:log
-itemtype:定义对象的类型
三、Switch开关参数
基于开关参数定义,主要用于二元操作。如果命令当中带上了Switch参数就表示开启属性定义,反之则不开启这个属性定义。如果一个参数是开关类型,在执行过程中可以通过 - 参数 来开启属性定义,否则表示不开启该属性定义。
代码语言:javascript复制 get-help get-childitem -parameter *
具体展示如下图:
CodeSigningCert <System.Management.Automation.SwitchParameter> 表示为开关类型的数据,
示例:
D盘创建一个logs文件夹,文件夹内容如下图:
首先获取文件夹内容
代码语言:javascript复制get-childitem
执行结果如下图:
这里增加Recurse参数,这个参数可以实现下一级文件夹的递归访问,命令如下:
代码语言:javascript复制get-childitem -Recurse
执行结果如下图:
说明:针对开关函数,不需要去指定 true 和false ,如果加上 -参数,表示为true,如果执行命令不增加参数,表示为false,不启用该参数的定义。
四、Position位置参数
Position位置参数主要用于参数集位置定义的类型,参数的属于与位置有关,判断一个命令是否支持Position参数。通过查询帮助命令的具体参数可以了解该命令是否有支持位置定义的函数。如下图的Path参数就是支持位置定义的参数。
但是在大部分场景当中不建议使用位置参数进行参数指定,如果没有参数值或没有按照位置设置参数,执行命令非常容易出错。