Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 具有多个选项的Switch语句导致一个代码块_Powershell - Fatal编程技术网

Powershell 具有多个选项的Switch语句导致一个代码块

Powershell 具有多个选项的Switch语句导致一个代码块,powershell,Powershell,我正在编写一个具有多个参数集的函数,当基于参数集的Switch语句决策时,我似乎无法获得正确的代码块 函数如下所示,但以下是命令和输出: Test-Fun -AccessId d -AccessKey d -AccountName d -ObjectType Device -DeviceDisplayName d 输出==1,2 Test-Fun -AccessId d -AccessKey d -AccountName d -ObjectType Device -DeviceName d

我正在编写一个具有多个参数集的函数,当基于参数集的Switch语句决策时,我似乎无法获得正确的代码块

函数如下所示,但以下是命令和输出:

Test-Fun -AccessId d -AccessKey d -AccountName d -ObjectType Device -DeviceDisplayName d
输出==1,2

Test-Fun -AccessId d -AccessKey d -AccountName d -ObjectType Device -DeviceName d
输出==1,3

Test-Fun -AccessId d -AccessKey d -AccountName d -ObjectType Device -DeviceID 10
输出==1

Test-Fun -AccessId d -AccessKey d -AccountName d -ObjectType Device 
输出==1

Test-Fun -AccessId d -AccessKey d -AccountName d -ObjectType Device 
有什么好处?谢谢

Function Test-Fun {
    [CmdletBinding(DefaultParameterSetName='AllDevices')]
    Param (
        [Parameter(Mandatory=$True)]
        [Parameter(ParameterSetName='AllDevices')]
        [Parameter(ParameterSetName='IDFilter')]
        [Parameter(ParameterSetName='NameFilter')]
        [Parameter(ParameterSetName='IPFilter')]
        $AccessId,

        [Parameter(Mandatory=$True)]
        [Parameter(ParameterSetName='AllDevices')]
        [Parameter(ParameterSetName='IDFilter')]
        [Parameter(ParameterSetName='NameFilter')]
        [Parameter(ParameterSetName='IPFilter')]
        $AccessKey,

        [Parameter(Mandatory=$True)]
        [Parameter(ParameterSetName='AllDevices')]
        [Parameter(ParameterSetName='IDFilter')]
        [Parameter(ParameterSetName='NameFilter')]
        [Parameter(ParameterSetName='IPFilter')]
        $AccountName,

        [Parameter(Mandatory=$True)]
        [Parameter(ParameterSetName='AllDevices')]
        [Parameter(ParameterSetName='IDFilter')]
        [Parameter(ParameterSetName='NameFilter')]
        [Parameter(ParameterSetName='IPFilter')]
        [ValidateSet("Collector","Device")]
        $ObjectType,

        [Parameter(Mandatory=$True,ParameterSetName='IDFilter')]
        [int]$DeviceId,

        [Parameter(Mandatory=$True,ParameterSetName='NameFilter')]
        [string]$DeviceDisplayName,

        [Parameter(Mandatory=$True,ParameterSetName='IPFilter')]
        [string]$DeviceName
    )

    switch ($PsCmdlet.ParameterSetName) {
        {("IDFilter") -or ("AllDevices")} {
            Write-Host '1'
        }
        ("NameFilter") {
            Write-Host '2'
        }
        ("IPFilter") {
            Write-Host '3'
        }
    }
}

{$\-in(“IDFilter”、“AllDevices”)}
或使用正则表达式:
开关-regex($var){'^(value1 | value2)$'{..}