大家早上好(:
)我想看看我是否能够跳到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
}