PS传递ParameterSet切换

时间:2017-06-30 23:53:07

标签: powershell

您好在此功能中如何通过'安装' $ action开关的参数,而不是使用默认的'报告' ?

Function MyFunc()
{
    [CmdletBinding(DefaultParameterSetName = 'Report',
                   PositionalBinding = $true)]
    param
    (
        [Parameter(ParameterSetName = 'Report',
                   Position = 0)]
        [Parameter(ParameterSetName = 'Install',
                   Position = 0)]
        [switch]$Action
    )

    switch ($PsCmdlet.ParameterSetName)
    {
        'Report' {
            Write-Output "Report chosen!" 
            break
        }
        'Install' {
            Write-Output "Install chosen!"
            break
        }
    }
}

当我做的时候

MyFunc -Action'安装'

引发错误:

MyFunc:找不到接受参数的位置参数'安装'。

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您只想支持一个参数:

Function MyFunc()
{
    [CmdletBinding(DefaultParameterSetName = 'Report',
                   PositionalBinding = $true)]
    param
    (
        [Parameter(ParameterSetName = 'Action',
                   Position = 0)]
        $Action        
    )

    switch ($Action)
    {
        'Report' {
            Write-Output "Report chosen!" 
            break
        }
        'Install' {
            Write-Output "Install chosen!"
            break
        }
    }
}

Get-Help MyFunc
MyFunc -Action 'Install' 

执行它:

C:\code> powershell.exe .\test.ps1

NAME
    MyFunc

SYNTAX
    MyFunc  [<CommonParameters>]

    MyFunc [[-Action] <Object>]  [<CommonParameters>]


ALIASES
    None


REMARKS
    None

Install chosen!