Если вы передаете эти аргументы самому сценарию, вы можете использовать внутреннюю переменную $args
, хотя сопоставление ключ / значение будет немного сложнее, поскольку PowerShell будет интерпретировать каждый оператор как аргумент. Я предлагаю (как и другие) использовать другой разделитель, чтобы упростить сопоставления.
Тем не менее, если вы хотите продолжить делать это таким образом, вы можете использовать функцию, подобную приведенной ниже:
Function Parse-Arguments {
$_args = $script:args # set this to something other than $script:args if you want to use this inside of the script.
$_ret = @{}
foreach ($_arg in $_args) {
if ($_arg.substring(0,1) -eq '-') {
$_key = $_arg; [void]$foreach.moveNext() # set the key (i.e. -a, -b) and moves to the next element in $args, or the tasks to do for that switch
while ($_arg.substring(0,1) -ne '-') { # goes through each task until it hits another switch
$_val = $_arg
switch($_key) {
'-a' {
write-host "doing stuff for $_key"
$ret.add($_key,$_val) # puts the arg entered and tasks to do for that arg.
}
# put more conditionals here
}
}
}
}
}