如何使PowerShell找出我的“字符串X字符串数组”参数集?

时间:2019-08-07 18:51:37

标签: powershell parameters

我正在编写一个路径操纵器函数,该函数带有两个参数,其中两个参数可以是字符串的StringArray

function wranglePath(
    [Parameter(Position = 0, Mandatory = $true, ParameterSetName = "arr-arr")]
    [Parameter(Position = 0, Mandatory = $true, ParameterSetName = "arr-joined")]
    [String[]]$AugendArray,
    [Parameter(Position = 1, Mandatory = $true, ParameterSetName = "arr-arr")]
    [Parameter(Position = 1, Mandatory = $true, ParameterSetName = "joined-arr")]
    [String[]]$AddendArray,
    [Parameter(Position = 0, Mandatory = $true, ParameterSetName = "joined-joined")]    
    [Parameter(Position = 0, Mandatory = $true, ParameterSetName = "joined-arr")]
    [String]$AugendJoined,
    [Parameter(Position = 1, Mandatory = $true, ParameterSetName = "joined-joined")]
    [Parameter(Position = 1, Mandatory = $true, ParameterSetName = "arr-joined")]
    [String]$AddendJoined
) {
    switch ($PsCmdlet.ParameterSetName) {
        "arr-arr" { 
            Write-Host "arr-arr"
        }
        "arr-joined" {
            Write-Host "arr-joined"            
        }
        "joined-arr" { 
            Write-Host "joined-arr" 
        }
        "joined-joined" { 
            Write-Host "joined-joined"
        }
    }
}

我希望PowerShell通过传递的参数类型来确定正确的ParameterSetName,我不想获取PSObject并在函数中找出答案。

如果我使用命名参数调用函数,则其行为将符合预期。但是,当我在不命名参数的情况下传递两个字符串时,它失败并出现ambiguousparameterset错误。

我正在编写的函数返回Array的{​​{1}}表示形式的文件路径,其中每个元素都已被清理和验证。这两个参数分别是StringAugend,每个参数要么是一个单独的Addend,由包含String的路径元素组成,要么是Path Delimiter Character字符串。如果参数是Array,则不允许任何元素包含Array。如果参数是单个Path Delimiter Character,则函数会拆分String,并将其转换为String字符串。这是一个多平台功能。

如何让PowerShell执行此操作?

0 个答案:

没有答案