关于命令语法

简短说明

介绍 PowerShell 中使用的语法关系图。

详细说明

Get-HelpGet-Command cmdlet 显示语法关系图,帮助你正确构造命令。 本主题说明如何解释语法关系图。

语法关系图

命令语法图中的每个段落都表示命令的有效形式。

若要构造命令,请按照语法关系图从左到右操作。 从可选参数中进行选择,并为占位符提供值。

PowerShell 对语法关系图使用以下表示法。

<command-name> -<Required Parameter Name> <Required Parameter Value>
[-<Optional Parameter Name> <Optional Parameter Value>]
[-<Optional Switch Parameters>]
[-<Optional Parameter Name>] <Required Parameter Value>

下面是 New-Alias cmdlet 的语法。

New-Alias [-Name] <string> [-Value] <string> [-Description <string>]
[-Force] [-Option {None | ReadOnly | Constant | Private | AllScope}]
[-PassThru] [-Scope <string>] [-Confirm] [-WhatIf] [<CommonParameters>]

语法的大小写是为了提高可读性,但 PowerShell 不区分大小写。

语法关系图具有以下元素。

命令名称

命令始终以命令名称开头,例如 New-Alias。 键入命令名称或其别名,例如 的 Get-Command“gcm”。

参数

命令的参数是确定命令用途的选项。 某些参数采用“值”,该值是用户对命令的输入。

例如, Get-Help 命令具有 Name 参数,可用于指定显示帮助的主题的名称。 主题名称是 Name 参数的值。

在 PowerShell 命令中,参数名称始终以连字符开头。 连字符告知 PowerShell 命令中的项是参数名称。

例如,若要使用 的 New-AliasName 参数,请键入以下内容:

-Name

参数可以是必需参数,也可以是可选的。 在语法图中,可选项括在方括号 中 [ ]

有关参数的详细信息,请参阅 about_Parameters

参数值

参数值是参数采用的输入。 由于Windows PowerShell基于 Microsoft .NET Framework,因此参数值在语法图中按其 .NET 类型表示。

例如, 的 Get-Help Name 参数采用一个“String”值,该值是一个文本字符串,例如一个单词或多个用引号括起来的单词。

[-Name] <string>

参数值的 .NET 类型括在尖括号 < > 中,以指示它是值的占位符,而不是在命令中键入的文本。

若要使用 参数,请将 .NET 类型占位符替换为具有指定 .NET 类型的对象。

例如,若要使用 Name 参数,请键入“-Name”,后跟字符串,如下所示:

-Name MyAlias

没有值的参数

某些参数不接受输入,因此它们没有参数值。 不带值的参数称为“开关参数”,因为它们的工作方式类似于开/关开关。 在) (包含它们,或者从命令) (省略它们。

若要使用 switch 参数,只需键入参数名称,前面有连字符。

例如,若要使用 cmdlet 的 New-AliasWhatIf 参数,请键入以下内容:

-WhatIf

参数集

命令的参数列在参数集中。 参数集类似于语法图的段落。

cmdlet New-Alias 有一个参数集,但许多 cmdlet 具有多个参数集。 某些 cmdlet 参数对参数集是唯一的,其他参数显示在多个参数集中。 每个参数集都表示有效命令的格式。 参数集仅包括可在命令中一起使用的参数。 如果参数不能在同一命令中使用,则它们将显示在单独的参数集中。

例如, Get-Random cmdlet 具有以下参数集:

Get-Random [[-Maximum] <Object>] [-Minimum <Object>] [-SetSeed <int>]
[<CommonParameters>]

Get-Random [-InputObject] <Object[]> [-Count <int>] [-SetSeed <int>]
[<CommonParameters>]

返回随机数的第一个参数集具有 MinimumMaximum 参数。 第二个参数集(从一组对象中返回随机选择的对象)包括 InputObjectCount 参数。 这两个参数集都具有 SetSeed 参数和通用参数。

这些参数集指示可以在同一命令中使用 InputObjectCount 参数,但不能在同一命令中使用 MaximumCount 参数。

通过使用该参数集中的参数来指示要使用的参数集。

但是,每个 cmdlet 也有一个默认参数集。 如果未指定参数集唯一的参数,则使用默认参数集。 例如,如果使用Get-Random不带参数,Windows PowerShell假定你使用的是 Number 参数集,并且它返回一个随机数。

在每个参数集中,参数按位置顺序显示。 仅当省略可选参数名称时,命令中的参数顺序才重要。 省略参数名称时,PowerShell 会按位置和类型将值分配给参数。 有关参数位置的详细信息,请参阅 about_Parameters

语法图中的符号

语法关系图列出了命令名称、命令参数和参数值。 它还使用符号来演示如何构造有效的命令。

语法关系图使用以下符号:

  • 连字符 - 指示参数名称。 在命令中,在参数名称前面键入紧靠的连字符,不带中间空格,如语法图中所示。

    例如,若要使用 的 New-AliasName 参数,请键入:

    -Name
    
  • 尖括号 <> 指示占位符文本。 不要在命令中键入尖括号或占位符文本。 而是将其替换为它所描述的项。

    尖括号用于标识参数采用的值的 .NET 类型。 例如,若要使用 cmdlet 的 New-AliasName 参数,请将 替换为<string>字符串,该字符串是一个单词或一组用引号括起来的单词。

  • 方括号 [ ] 表示可选项。 参数及其值可以是可选的,也可以是可选参数的名称。

    例如, 的 New-AliasDescription 参数及其值括在括号中,因为它们都是可选的。

    [-Description <string>]
    

    括号还指示 Name 参数值 <string> 是必需的,但参数名称“Name”是可选的。

    [-Name] <string>
    
  • 追加到 .NET 类型的右方括号和左括号 [] 指示参数可以接受该类型的一个或多个值。 以逗号分隔的列表形式输入值。

    例如,cmdlet 的 New-AliasName 参数仅接受一个字符串,但 Get-ProcessName 参数可以采用一个或多个字符串。

    New-Alias [-Name] <string>
    
    New-Alias -Name MyAlias
    
    Get-Process [-Name] <string[]>
    
    Get-Process -Name Explorer, Winlogon, Services
    
  • 大括号 {} 指示“枚举”,它是参数的有效值集。

    大括号中的值用竖线 |分隔。 这些条形表示“排他或”选项,这意味着只能从大括号内列出的值集中选择一个值。

    例如,cmdlet 的 New-Alias 语法包括 Option 参数的以下值枚举:

    -Option {None | ReadOnly | Constant | Private | AllScope}
    

    大括号和垂直条指示可以为 Option 参数选择列出的任意一个值,例如“ReadOnly”或“AllScope”。

    -Option ReadOnly
    

可选项

括号将 [] 可选项括起来。 例如,在 New-Alias cmdlet 语法说明中, Scope 参数是可选的。 这在语法中由参数名称和类型的括号指示:

[-Scope <string>]

以下两个示例都是 cmdlet 的正确 New-Alias 用法:

New-Alias -Name utd -Value Update-TypeData
New-Alias -Name utd -Value Update-TypeData -Scope Global

参数名称可以是可选的,即使该参数的值是必需的。 这在语法中由参数名称周围的括号指示,而不是参数类型,如 cmdlet 中的 New-Alias 此示例所示:

[-Name] <string> [-Value] <string>

以下命令正确使用 New-Alias cmdlet。 命令生成相同的结果。

New-Alias -Name utd -Value Update-TypeData
New-Alias -Name utd Update-TypeData
New-Alias utd -Value Update-TypeData
New-Alias utd Update-TypeData

如果参数名称未按类型包含在语句中,Windows PowerShell尝试使用参数的位置将值分配给参数。

以下示例不完整:

New-Alias utd

此 cmdlet 需要 NameValue 参数的值。

在语法示例中,括号还用于命名和强制转换为.NET Framework类型。 在此上下文中,括号并不表示元素是可选的。

另请参阅