Powershell 具有多个选项的Switch语句导致一个代码块
我正在编写一个具有多个参数集的函数,当基于参数集的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
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)$'{..}