У меня есть вложенный оператор 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)'..."}
}
}
}
Я знаю, что нынешняя модель $ . $ не работает, но я ищу что-то, что могло быобратитесь к текущему пункту.Я думаю, что у меня может быть переменная-заполнитель, которую я просто заполняю текущим элементом, независимо от условия, и использую его в области видимости, но, возможно, есть что-то более элегантное.Я также попытался пометить свои операторы переключателей и попытался «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?