Validation Powershell 2.0函数帮助参数检查

Validation Powershell 2.0函数帮助参数检查,validation,powershell,parameters,Validation,Powershell,Parameters,背景: 这是一个参数验证,它在powershell 2.0上运行 没有升级WMF的选项。我的问题是。。。 如果两个参数都为空,则显示指定参数;如果只有P1为空,则显示另一个;如果P2为空,则显示另一个;如果两个参数都已占用,则显示另一个。我找不到让它正常工作的方法。。。 请帮忙 Function checkParam { write-verbose "Parameter Validation" If ("Lzu","Mlv","Irv" -Contains $MoveDBsTo)

背景:
这是一个参数验证,它在powershell 2.0上运行 没有升级WMF的选项。我的问题是。。。 如果两个参数都为空,则显示指定参数;如果只有P1为空,则显示另一个;如果P2为空,则显示另一个;如果两个参数都已占用,则显示另一个。我找不到让它正常工作的方法。。。 请帮忙

Function checkParam
{
    write-verbose "Parameter Validation"
    If ("Lzu","Mlv","Irv" -Contains $MoveDBsTo)
        {$param1=1}
    else{$param1=0}

    If (1,2,3 -Contains $SelectedPref)
        {$param2=1}
    else{$param2=0}

    If ($param1 -and $param2 -eq 0)
        {
        $ErrorParams4 = @{
                     Message="SYNTAX ERROR: `n Specify a parameter"
                     Category="InvalidData"
                    }
        Write-error @ErrorParams4
        $paramsEmpty=1
        Exit
        }

    If ($param1 -eq 0 -and $param2 -ne 1)
        {
        $ErrorParams1 = @{
                         Message="SYNTAX ERROR: `n Check syntax: -MoveDBsto [Lzu, Mlv, Irv]"
                         Category="InvalidData"
                        }
        $param1=2
        Write-error @ErrorParams1
        Exit
        }

    If ($param2 -eq 0 -and $param1 -ne 1)
        {
        $ErrorParams2 = @{
                     Message="SYNTAX ERROR: `n Check syntax: -SelectedPref [1,2,3]" 
                     Category="InvalidData"
                    }
        $param2=2
        Write-error @ErrorParams2
        Exit
        }

    If ($param1 + $param2 -eq 2)
        {
        $ErrorParams3 = @{
                         Message="SYNTAX ERROR: `n Specify only one parameter" 
                         Category="InvalidData"
                        }
        Write-error @ErrorParams3
        Exit
        }
}

checkParam

您可以在PowerShell v2上使用参数验证。有关详细信息,请运行
关于函数的帮助\u高级\u参数
。[CmdletBinding()]Param([validateset(“Lzu”、“Mlv”、“Irv”,IgnoreCase=$true)][String]$MoveDBsTo=$null,#$global:param1[validateset(1,2,3)][Int]$SelectedPref=$null#$global:param2)用你尝试过的内容更新你的问题,并具体说明它是如何不起作用的。我用上面发布的代码尝试了参数验证。在设置“设置验证”并在没有参数的情况下运行之后,它应该抛出一条错误消息,请求参数。我考虑过使用mandatory,但是有2个参数,它应该只使用1个参数运行,所以对两个参数都使用mandatory是行不通的,对于“notnull”也是如此。我希望这样做的方式是,2个参数中有1个需要指定和验证。我想不出使用默认参数验证的方法,这就是我创建自定义函数的原因。您可能可以通过创建参数集来完成所需的工作。文档中对此进行了解释。