about_Command_Syntax
简短说明
介绍 PowerShell 中使用的语法关系图。
长说明
Get-Help 和 Get-Command cmdlet 显示语法关系图,帮助你正确构造命令。 本文介绍如何解释语法关系图。
获取命令的语法
有两种方法可以获取命令的语法:Get-Help
和 Get-Command
。
Get-Command
Get-Command
命令可用于获取有关系统上任何命令的信息。 使用语法参数获取命令的语法。
Get-Command Get-Command -Syntax
Get-Command [[-ArgumentList] <Object[]>] [-Verb <string[]>] [-Noun <string[]>]
[-Module <string[]>] [-FullyQualifiedModule <ModuleSpecification[]>]
[-TotalCount <int>] [-Syntax] [-ShowCommandInfo] [-All] [-ListImported]
[-ParameterName <string[]>] [-ParameterType <PSTypeName[]>]
[<CommonParameters>]
Get-Command [[-Name] <string[]>] [[-ArgumentList] <Object[]>]
[-Module <string[]>] [-FullyQualifiedModule <ModuleSpecification[]>]
[-CommandType <CommandTypes>] [-TotalCount <int>] [-Syntax] [-ShowCommandInfo]
[-All] [-ListImported] [-ParameterName <string[]>]
[-ParameterType <PSTypeName[]>] [-UseFuzzyMatching]
[-FuzzyMinimumDistance <uint>] [-UseAbbreviationExpansion]
[<CommonParameters>]
Get-Help
Get-Help
命令提供有关 PowerShell 命令的详细信息,包括语法、cmdlet 和参数的详细说明以及示例。 输出 Get-Help
命令以命令的简要说明开头,后跟语法。
Get-Help Get-Command
以下输出已缩短,以专注于语法说明。
NAME
Get-Command
SYNOPSIS
Gets all commands.
SYNTAX
Get-Command [[-Name] <System.String[]>] [[-ArgumentList] <System.Object[]>]
[-All] [-CommandType {Alias | Function | Filter | Cmdlet | ExternalScript |
Application | Script | Workflow | Configuration | All}]
[-FullyQualifiedModule <Microsoft.PowerShell.Commands.ModuleSpecification[]>]
[-ListImported] [-Module <System.String[]>] [-ParameterName <System.String[]>]
[-ParameterType <System.Management.Automation.PSTypeName[]>]
[-ShowCommandInfo] [-Syntax] [-TotalCount <System.Int32>]
[-UseAbbreviationExpansion] [-UseFuzzyMatching] [<CommonParameters>]
Get-Command [[-ArgumentList] <System.Object[]>] [-All]
[-FullyQualifiedModule <Microsoft.PowerShell.Commands.ModuleSpecification[]>]
[-ListImported] [-Module <System.String[]>] [-Noun <System.String[]>]
[-ParameterName <System.String[]>]
[-ParameterType <System.Management.Automation.PSTypeName[]>]
[-ShowCommandInfo] [-Syntax] [-TotalCount <System.Int32>]
[-Verb <System.String[]>] [<CommonParameters>]
...
Get-Help
的输出与 Get-Command
的输出略有不同。 请注意 CommandType 参数的语法差异。 Get-Command
将参数类型显示为 [CommandTypes]
枚举,而 Get-Help
显示枚举的可能值。
参数集
PowerShell 命令的参数列在参数集中。 PowerShell 命令可以有一个或多个参数集。 Get-Command
cmdlet 有两个参数集,如前面的示例所示。
某些 cmdlet 参数对参数集是唯一的,而其他参数则显示在多个参数集中。 每个参数集表示有效命令的格式。 参数集仅包含可在命令中一起使用的参数。 如果参数不能在同一命令中使用,它们将列在单独的参数集中。
例如,Get-Random cmdlet 有以下参数集:
$cmd = Get-Command Get-Random
$cmd.ParameterSets |
Select-Object Name, IsDefault, @{n='Parameters';e={$_.ToString()}} |
Format-Table -Wrap
Name IsDefault Parameters
---- --------- ----------
RandomNumberParameterSet True [[-Maximum] <Object>] [-SetSeed <int>]
[-Minimum <Object>] [-Count <int>]
[<CommonParameters>]
RandomListItemParameterSet False [-InputObject] <Object[]> [-SetSeed <int>]
[-Count <int>] [<CommonParameters>]
ShuffleParameterSet False [-InputObject] <Object[]> -Shuffle
[-SetSeed <int>] [<CommonParameters>]
- 第一个参数集返回一个或多个随机数,并具有 Minimum、Maximum 和 Count 参数。
- 第二个参数集从一组对象中返回随机选择的对象,并包括 InputObject 和 Count 参数。
- 第三个参数集具有按随机顺序返回对象的 Shuffle 参数,例如混排一组卡片。
- 所有参数集都具有 SetSeed 参数和通用参数。
这些参数集显示,可以在同一命令中使用 InputObject 和 Count 参数,但不能同时使用 Maximum 和 Shuffle 参数。
每个 cmdlet 还有一个默认参数集。 如果未指定参数集唯一的参数,则会使用默认参数集。 例如,如果使用不带参数的 Get-Random
,PowerShell 假定你使用的是 RandomNumberParameterSet 参数集,并返回一个随机数。
语法关系图中的符号
语法关系图列出了命令名称、命令参数和参数值。
语法关系图使用以下符号:
连字符
-
指示参数名称。 在命令中,在紧靠参数名称前面键入连字符(中间不带空格),如语法关系图中所示。例如,若要使用
Get-Command
的 Name 参数,请键入:Get-Command -Name
。
尖括号
< >
指示占位符文本。 不要在命令中键入尖括号或占位符文本。 而是将其替换为它描述的项。尖括号内的占位符标识参数采用的值的 .NET 类型。 例如,若要使用
Get-Command
cmdlet 的 Name 参数,请将<string[]>
替换为用逗号 (,
) 分隔的一个或多个字符串。
追加到 .NET 类型的括号
[]
指示参数可以接受该类型的一个或多个值。 以逗号分隔的列表形式输入值。例如,
New-Alias
cmdlet 的 Name 和 Value 参数仅接受一个字符串。New-Alias [-Name] <string> [-Value] <string>
New-Alias -Name MyAlias -Value mycommand.exe
但是,Get-Process 的 Name 参数可以接受一个或多个字符串。
Get-Process [-Name] <string[]>
Get-Process -Name Explorer, Winlogon, Services
没有值的参数
某些参数不接受输入,因此没有参数值。 不带值的参数为开关参数。 开关参数的用法类似于布尔值。 它们默认为
$false
。 使用开关参数时,该值设置为$true
。例如,
Get-Command
的 ListImported 参数是开关参数。 使用 ListImported 参数时,cmdlet 仅返回从当前会话中的模块导入的命令。Get-Command [-ListImported]
用括号将
[ ]
括起来表示可选项。 参数及其值可以是可选的。 例如,Get-Command
的 CommandType 参数及其值括在括号中,因为它们都是可选的。Get-Command [-CommandType <CommandTypes>]
参数名称(而不是参数值)两边的括号表示参数名称是可选的。 这些参数称为位置参数。 参数值必须按正确的顺序显示,才能将值绑定到正确的参数。
例如,对于
New-Alias
cmdlet,Name 和 Value 参数值是必需的,但参数名称-Name
和-Value
是可选的。New-Alias [-Name] <string> [-Value] <string>
New-Alias MyAlias mycommand.exe
在每个参数集中,参数按位置顺序显示。 仅当省略可选参数名称时,命令中的参数顺序才重要。 省略参数名称时,PowerShell 按位置和类型将值分配给参数。 有关参数位置的详细信息,请参阅 about_Parameters。
{}
在大括号内指示“枚举”,这是参数的有效值集。大括号中的值用垂直条分隔
|
。 这些条形图表示 exclusive-OR 选择,意思是只能从大括号中列出的值集中选择一个值。例如,
New-Alias
cmdlet 的语法包括 Option 参数的以下值枚举:New-Alias -Option {None | ReadOnly | Constant | Private | AllScope}
大括号和垂直条表示可以选择 Option 参数的任何一个列出的值,例如
ReadOnly
或AllScope
。New-Alias -Option ReadOnly