#命令与参数
#命令的组成
PowerShell 中的命令通常由命令名、参数和参数值组成:
命令名 -参数名 参数值 -开关参数
例如:
> Get-ChildItem -Path C:\Windows -File -Recurse
Get-ChildItem- 命令名-Path C:\Windows- 命名参数及其值-File- 开关参数,只表示开启或关闭-Recurse- 开关参数
#参数类型
PowerShell 的参数主要有以下几种形式:
| 形式 | 示例 | 说明 |
|---|---|---|
| 命名参数 | -Path C:\Windows | 参数名后跟参数值 |
| 位置参数 | Get-ChildItem C:\Windows | 省略参数名,按位置传入 |
| 开关参数 | -Recurse | 不需要值,出现即为真 |
| 数组参数 | -Name a,b,c | 使用逗号分隔多个值 |
| 布尔参数 | -Force:$true | 显式传入布尔值 |
#参数的写法
参数名不区分大小写,且通常支持无歧义的前缀简写:
> Get-ChildItem -Recurse
> Get-ChildItem -Rec
以下写法是等价的:
> Get-ChildItem -Path C:\Windows -Recurse
> Get-ChildItem C:\Windows -Recurse
在脚本中建议使用完整的参数名,便于阅读和维护。
#传递数组和多个值
当参数接受数组时,可以使用逗号分隔:
> Get-ChildItem -Path C:\Windows,C:\Program Files
也可以先定义数组再传入:
> $paths = @("C:\Windows", "C:\Program Files")
> Get-ChildItem -Path $paths
#开关参数
开关参数不需要值。如果要显式关闭,可以使用 :$false:
> Get-ChildItem -Recurse
> Get-ChildItem -Recurse:$false
#常见参数
PowerShell 的 cmdlet 通常支持一组 通用参数:
| 参数 | 说明 |
|---|---|
-Verbose | 输出详细过程信息 |
-Debug | 输出调试信息 |
-ErrorAction | 指定发生错误时的行为 |
-ErrorVariable | 将错误保存到指定变量 |
-WarningAction | 指定警告的处理方式 |
-WarningVariable | 将警告保存到指定变量 |
-OutVariable | 将输出保存到指定变量 |
-PipelineVariable | 将当前管道对象保存到指定变量 |
例如:
> Get-ChildItem -Path C:\NotExist -ErrorAction SilentlyContinue
> Get-ChildItem -Path C:\Windows -Verbose
#停止解析符号
--% 表示其后的内容不再由 PowerShell 解析,而是原样传给外部程序:
> some.exe --% --option "value with spaces"
--%仅适用于调用外部程序,在 cmdlet 中不生效。
#获取参数信息
使用 Get-Help 查看命令支持的全部参数:
> Get-Help Get-ChildItem -Parameter *
详见 Get-Help 帮助手册。