我在switch语句中有一个嵌套的switch语句。我想知道是否有可能在嵌套的switch语句的范围内获取未嵌套的当前项。我知道我可以通过一个具有中等难度的for循环来完成这个任务但是我希望有一些优雅我缺少用switch语句完成这个。下面我尝试为我的一个脚本构建一些参数处理。
# Process Args
$currentArg
$recurseOn = $false
:ListArgs switch -regex ($args)
{
"-ou?" { $currentArg = "Organizational Unit"; write-host "Noticed ou switch"}
"-li?k?e?" { $currentArg = "Compare To"; write-host "Noticed like switch"}
"^-re?c?u?r?s?e?$" { $recurseOn = $true; write-host "Recurse switched on..."}
default {
:CurrentSwitch switch ($currentArg)
{
"Organizational Unit" { $OU = $_.$_ ; write-host "OU changed to '$($OU)'..."}
"Compare To" { $Match = $_.$_ ; write-host "Lookup changed to '$($Match)'..."}
}
}
}
我知道$ 的现有模型。$ 不起作用,但我正在寻找可以引用当前项目的东西。我想我可以有一个填充变量,我只是填写当前项目而不管条件和范围内使用,但也许有更优雅的东西。我也尝试标记我的switch语句并尝试'ListArgs。$ _'无济于事。
非常感谢任何输入。提前谢谢!
发布后我这样做了:
# Process Args
$currentArg
$recurseOn = $false
:ListArgs switch -regex ($args)
{
"-ou?" { $currentArg = "Organizational Unit"; write-host "Noticed ou switch"}
"-li?k?e?" { $currentArg = "Compare To"; write-host "Noticed like switch"}
"^-re?c?u?r?s?e?$" { $recurseOn = $true; write-host "Recurse switched on..."}
default {
$item = $_
:CurrentSwitch switch ($currentArg)
{
"Organizational Unit" { $OU = $item; write-host "OU changed to '$($OU)'..."}
"Compare To" { $Match = $item; write-host "Lookup changed to '$($Match)'..."}
}
}
}
并且能够让它正常工作,但是对于$ _或循环标签的任何输入都会受到赞赏。或者有更好的方法在PowerShell中进行arg处理吗?
答案 0 :(得分:1)
我想因为没有更好的建议来进行论证处理,我回答了我自己的问题。
$item = $_
答案 1 :(得分:0)
我想我可以有一个填充物 变量,我只是填写 当前项目,无论条件如何 并在范围内使用
通常我这样做,我不知道更好的方法。因此,您的代码将是:
...
default {
$filler = $_
:CurrentSwitch switch ($currentArg)
{
"Organizational Unit" { use $filler in here }
"Compare To" { use $filler in here }
}
}