如果不为空,则跳到PS中的某个位置



大家早上好(:

)我想看看我是否能够跳到PS的某个地方而不把它包装在ScriptBlock中;见鬼,我甚至可以接受,但是,我只是不确定如何去做。

我要做的是:添加一个参数集到一个函数,如果有东西提供给参数-GrpSelec(我知道imma改变它),那么就跳过脚本的其余部分,去我的$swap变量执行开关。

$Group1 = @("1st Group", "2nd Group")
$Group2 = @("3rd Group", "4th Group")
Function Test-Group{
param(
[ValidateSet("Group1","group2")]
[array]$GrpSelec)
if($GrpSelec){ &$swap }
$AllGroups = @("Group1", "Group2")
for($i=0; $i -lt $AllGroups.Count; $i++){
Write-Host "$($i): $($AllGroups[$i])"}
$GrpSelec = Read-Host -Prompt "Select Group(s)" 
$GrpSelec = $GrpSelec -split " "
$swap = Switch -Exact ($GrpSelec){            
{1 -or "Group1"}  {"$Group1"}
{2 -or "Group2"}  {"$Group2"}
}
Foreach($Group in $swap){
"$Group"}

}

这样的事情可能吗?

我在谷歌上搜索了几个类似的问题,这些问题指向调用操作符&(如上所示),和/或foreach,这绝对不是相同的lol。

别对我太苛刻,我只是在试验。

一个简单的if语句怎么样?

function Test-Group {
param(
[string[]]$GrpSelec
)
if(!$PSBoundParameters.ContainsKey('GrpSelect')){
# no argument was passed to -GrpSelec, 
# populate $GrpSelec in here before proceeding with the rest of the script
}
# Now that $GrpSelec has been populated, let's do the work
$swap = Switch -Exact ($GrpSelec){            
{1 -or "Group1"}  {"$Group1"}
{2 -or "Group2"}  {"$Group2"}
}
# rest of function
}

最新更新