about_Parameters

应用到: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

主题

about_Parameters

简短说明

介绍如何使用 Windows PowerShell 中的命令参数。

详细说明

大多数 Windows PowerShell 命令(比如 cmdlet、函数和脚本)依赖于参数来允许用户选择选项或提供输入。参数紧随命令名称之后且具有以下形式:

        -<parameter_name> <parameter_value>

参数名称前面带有连字符 (-),这会提示 Windows PowerShell,表明跟在连字符后面的单词为参数名称。某些参数不需要或不接受参数值。其他参数需要值,但在命令中不需要参数名称。

参数类型和对参数的要求会有所不同。若要查找有关某个命令的参数的信息,则使用 Get-Help cmdlet。例如,若要查找有关 Get-ChildItem cmdlet 的参数的信息,请键入:

        Get-Help Get-ChildItem

若要查找有关某个脚本的参数的信息,请使用指向该脚本文件的完整路径。例如:

        Get-Help $home\Documents\Scripts\Get-Function.ps1

Get-Help cmdlet 返回关于命令的各种详细信息,包括说明、命令语法、有关参数的信息以及展示如何使用命令中的参数的示例。

你也可以使用 Get-Help cmdlet 的 Parameter 参数来查找有关某个特定参数的信息。或者,你可以将 Parameter 参数和通配符 (*) 值一起使用来查找有关命令的所有参数的信息。例如,以下命令获取有关 Get-Member cmdlet 的所有参数的信息:

        Get-Help Get-Member -Parameter *

默认参数值

可选参数具有默认值,当在命令中未指定该参数时,则会使用或假定此默认值。

例如,许多 cmdlet 的 ComputerName 参数的默认值为本地计算机的名称。因此,会在命令中使用本地计算机名称,除非指定了 ComputerName 参数。

若要查找默认参数值,请参阅 cmdlet 的帮助主题。参数说明应包括默认值。

你也可以为 cmdlet 或高级函数的任何参数设置自定义默认值。有关设置自定义默认值的信息,请参阅 about_Parameters_Default_Values。

参数属性表

当你使用 Get-Help cmdlet 的 Full、Parameter 或 Online 参数时,Get-Help 会显示一个包含关于参数的详细信息的参数属性表。

这些信息包括你使用该参数时需要知道的详细信息。例如,Get-ChildItem cmdlet 的帮助主题包括以下关于其 Path 参数的详细信息:

        -path <string[]>
            Specifies a path of one or more locations. Wildcard characters are
            permitted. The default location is the current directory (.).

        Required?                    false
        Position?                    1
        Default value                Current directory
        Accept pipeline input?       true (ByValue, ByPropertyName)
        Accept wildcard characters?  true

参数信息包括参数语法、参数的说明以及参数属性。以下各部分介绍参数属性。

是否需要参数?

此设置指示参数是否是必需的,也即,是否所有使用该 cmdlet 的命令都必须包含该参数。当值为“True”并且命令中缺少参数时,Windows PowerShell 会提示你输入该参数的值。

参数位置?

此设置指示你是否可以提供一个参数的值,而无需在其前面加上参数名称。如果设置为“0”或“named”,则需要参数名称。这种类型的参数被称为命名参数。可以在 cmdlet 名称之后的任何位置列出命名参数。

如果将“参数位置?”设置为 0 以外的整数,则不需要参数名称。这种类型的参数称为位置参数,并且数字指示,相对于其他位置参数,该参数所必须显示的位置。如果针对某个位置参数包含了参数名称,则该参数可以列于 cmdlet 名称之后的任何位置。

例如,Get-ChildItem cmdlet 具有 Path 和 Exclude 参数。Path 的“参数位置?”设置为 1,这意味着它是一个位置参数。Exclude 的“参数位置?”设置为 0,这意味着它是一个命名参数。

这意味着 Path 不需要参数名称,但是它的参数值必须为命令中的第一个或唯一一个未命名的参数值。但是,由于 Exclude 参数为命名参数,你可以将其放置在命令中的任何位置。

由于这两个参数的“参数位置?”设置,你可以使用以下任何命令:

        Get-ChildItem -path c:\techdocs -exclude *.ppt
        Get-ChildItem c:\techdocs -exclude *.ppt
        Get-ChildItem -exclude *.ppt -path c:\techdocs
        Get-ChildItem -exclude *.ppt c:\techdocs

如果你要包括另一个位置参数而不包含参数名称,则必须按照“参数位置?”设置指定的顺序放置该参数。

参数类型

此设置指定参数值的 Microsoft .NET Framework 类型。例如,如果类型为 Int32,则参数值必须为整数。如果类型为字符串,则参数值必须为字符串。如果该字符串包含空格,则必须将值括在引号内,或必须在空格前面加上转义符 (`)。

默认值

如果没有提供其他任何值,则此设置指定该参数将假定的值。例如,Path 参数的默认值通常是当前目录。必需的参数没有默认值。许多可选参数均不存在默认值,因为如果参数不被使用,就不起任何作用。

是否接受多个值?

此设置指示某个参数是否接受多个参数值。当某个参数接受多个参数值时,你可以键入一个以逗号分隔的列表作为命令中的参数的值,或将一个以逗号分隔的列表(数组)保存在变量中,然后将变量指定为参数值。

例如,Get-Service cmdlet 的 ServiceName 参数接受多个值。下面的命令都是有效的:

        get-service -servicename winrm, netlogon


        $s = "winrm", "netlogon"
        get-service -servicename $s

是否接受管道输入?

此设置指示是否可以使用管道运算符 (|) 向参数发送值。

    
    Value                    Description
    -----                    -----------
    False                    Indicates that you cannot pipe a value to the 
                             parameter.


    True (by Value)          Indicates that you can pipe any value to the 
                             parameter, just so the value has the .NET 
                             Framework type specified for the parameter or the
                             value can be converted to the specified .NET 
                             Framework type.


                             When a parameter is "True (by Value)", Windows 
                             PowerShell tries to associate any piped values 
                             with that parameter before it tries other methods
                             to interpret the command.


    True (by Property Name)  Indicates that you can pipe a value to the 
                             parameter, but the .NET Framework type of the 
                             parameter must include a property with the same
                             name as the parameter.
 
                             For example, you can pipe a value to a Name 
                             parameter only when the value has a property 
                             called "Name".

是否接受通配符?

此设置指示参数的值是否可以包含通配符,以便参数值可以与目标容器中的多个现有项相匹配。

通用参数

通用参数是可以与任何 cmdlet 一起使用的参数。有关通用参数的详细信息,请参阅 about_CommonParameters

另请参阅

about_Command_syntax

about_Comment_Based_Help

about_Functions_Advanced

about_Parameters_Default_Values

about_Pipelines

about_Wildcards