about_Command_Syntax

简短说明

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

长说明

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

获取命令的语法

有两种方法可以获取命令的语法:Get-HelpGet-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>]
  • 第一个参数集返回一个或多个随机数,并具有 MinimumMaximumCount 参数。
  • 第二个参数集从一组对象中返回随机选择的对象,并包括 InputObjectCount 参数。
  • 第三个参数集具有按随机顺序返回对象的 Shuffle 参数,例如混排一组卡片。
  • 所有参数集都具有 SetSeed 参数和通用参数。

这些参数集显示,可以在同一命令中使用 InputObject 和 Count 参数,但不能同时使用 Maximum 和 Shuffle 参数。

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

语法关系图中的符号

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

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

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

    例如,若要使用 Get-CommandName 参数,请键入: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-ProcessName 参数可以接受一个或多个字符串。

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

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

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

    Get-Command [-ListImported]
    
  • 用括号将 [ ] 括起来表示可选项。 参数及其值可以是可选的。 例如,Get-CommandCommandType 参数及其值括在括号中,因为它们都是可选的。

    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 参数的任何一个列出的值,例如 ReadOnlyAllScope

    New-Alias -Option ReadOnly
    

另请参阅