about_Command_Syntax

简短说明

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

长说明

Get-HelpGet-Command cmdlet 显示语法关系图,以帮助你正确构造命令。 本文介绍如何解释语法关系图。

获取命令的语法

可通过两种方式获取命令的语法: Get-HelpGet-Command

Get-Command

命令 Get-Command 可用于获取系统上任何命令的相关信息。 使用 Syntax 参数获取命令的语法。

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 命令可以有一个或多个参数集。 cmdlet Get-Command 有两个参数集,如前面的示例所示。

某些 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>]
  • 第一个参数集返回一个或多个随机数,并具有 MinimumMaximumCount 参数。
  • 第二个参数集从一组对象中返回随机选择的对象,并包括 InputObjectCount 参数。
  • 第三个参数集具有 Shuffle 参数,该参数以随机顺序返回对象的集合,例如随机排列一组卡片。
  • 所有参数集都具有 SetSeed 参数和公共参数。

这些参数集表明,可以在同一命令中使用 InputObjectCount 参数,但不能同时使用 MaximumShuffle 参数。

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

语法图中的符号

语法关系图列出了命令名称、命令参数和参数值。

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

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

    例如,若要使用 的 Name 参数 Get-Command,请键入: Get-Command -Name

  • 尖括号 < > 表示占位符文本。 请勿在命令中键入尖括号或占位符文本。 相反,请将它替换为它描述的项。

    尖括号内的占位符标识参数采用的值的 .NET 类型。 例如,若要使用 cmdlet 的 Get-Command Name 参数,请将 替换为<string[]>一个或多个用逗号分隔的字符串 (,) 。

  • []追加到 .NET 类型的括号表示参数可以接受该类型的一个或多个值。 以逗号分隔的列表的形式输入值。

    例如,cmdlet 的 New-AliasNameValue 参数各只采用一个字符串。

    New-Alias [-Name] <string> [-Value] <string>
    
    New-Alias -Name MyAlias -Value mycommand.exe
    

    Get-ProcessName 参数可以采用一个或多个字符串。

    Get-Process [-Name] <string[]>
    
    Get-Process -Name Explorer, Winlogon, Services
    
  • 没有值的参数

    某些参数不接受输入,因此它们没有参数值。 不带值的参数是 开关参数。 开关参数的使用方式与布尔值类似。 它们默认为 $false。 使用 switch 参数时,该值设置为 $true

    例如,的 ListImported 参数 Get-Command 是 switch 参数。 使用 ListImported 参数时,cmdlet 仅返回从当前会话中的模块导入的命令。

    Get-Command [-ListImported]
    
  • [ ]参数周围的括号表示可选项。 参数及其值可以是可选的。 例如, 的 CommandType 参数 Get-Command 及其值括在方括号中,因为它们都是可选的。

    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

  • 大括号 {} 表示“枚举”,它是参数的有效值集。

    大括号中的值用垂直条 |分隔。 这些条形表示 独占 OR 选项,这意味着只能从大括号内列出的值集中选择一个值。

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

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

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

    New-Alias -Option ReadOnly
    

另请参阅