如果不为空则跳转到 PS 中的某处

If not empty jump to somewhere in PS

你好,早上好(:

我想看看我是否能够跳转到 PS 中的某个地方而不用将其包装在 ScriptBlock 中;见鬼,我什至可以接受,但是,我只是不确定该怎么做。

我想做的是:将参数集添加到函数中,如果向参数提供了某些内容-GrpSelec(我知道我会更改它),那么只需跳过脚本的其余部分然后转到我的 $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"}
        
    }

这样的事情有可能吗?

我用谷歌搜索了几个类似的问题,这些问题指向调用运算符&(如上所示),and/or,一个foreach,这绝对不是同一个大声笑.

别着急,我只是在试验(:

一个简单的 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
}