代码之家  ›  专栏  ›  技术社区  ›  Julian Birch

如何在PowerShell脚本中指定非位置参数?

  •  8
  • Julian Birch  · 技术社区  · 14 年前

    我有以下内容 param 在脚本开头阻止

    param(
     [string]$command,
     [string]$version = "1.1.0"
    )
    

    这很好,只是我需要 $version 是位置参数,因此如果键入

    .\script.ps1 run argument
    

    然后 $args 应包含“参数”和 美元版本 应为“1.1.0”。我知道我可以用C Cmdlet来完成它,但是如果我可以将它作为单个脚本来交付,那就更方便了。

    1 回复  |  直到 12 年前
        1
  •  6
  •   Keith Hill    14 年前

    在PowerShell 1.0中,不可能是Afaik。如果不希望$version参数是位置的,则需要删除它。

    在PowerShell 2.0中,您可以通过创建一个高级函数来获取所需的内容,在该函数中,您可以在参数属性中指定其他信息,例如:

    function foo {    
        param(
            [Parameter(Mandatory=$true, Position = 0)]
            [string]
            $command,
    
            [Parameter()]
            [string]
            $version = "1.1.0",
    
            [Parameter(ValueFromRemainingArguments = $true)]
            $remainingArgs
        )
    
        Process {
            $OFS = ','
            "command is $command"
            "version is $version"
            "remainingArgs are $remainingArgs"
        }
    }
    
    foo run argument