Param с большим количеством значений - PullRequest
0 голосов
/ 11 декабря 2018

Первые дни с CMD и Batch Я использую команду shift.

Как мне это сделать с PowerShell?Вот мой пример:

# test.ps1
# start ps script with parameters
param(
    [string]$varmon)

if ($varmon) {
    foreach ($var in $varmon) {
        Write-Host $var
    }
}

PS CLI:. \ Test.ps1 один два три

Я получаю только «один».Как я могу запустить скрипт с большим количеством параметров, чем один?

1 Ответ

0 голосов
/ 11 декабря 2018

Вы можете использовать автоматическую переменную $args:

# test.ps1
# start ps script with parameters
foreach ($var in $args){
    write-host $var
}

Массивы позволяют вводить переменное количество аргументов - в конце дня $args простоавтоматический массив, созданный для неназначенных переменных.

Параметры массива: запятая с разделителями, а не пробел - пример ниже.

test.ps1

# test.ps1
# start ps script with parameters
param(
    [int[]]$numbers,
    [string[]]$names
)

if($numbers){
    Write-host "`nYou have entered the following numbers:"
    foreach ($num in $numbers){
        write-host "Number     : $num"
        Write-host "Square root: $([system.math]::sqrt($num))"
    }
}

if($names){
    Write-host "`nYou have entered the following names:"    
    foreach($name in $names){
        Write-host $name
    }
}

Пример 1: Без использования имен параметров вам нужно будет поддерживать массивы в порядке.Итак, $numbers сначала и $names во-вторых

PS CLI:. \ Test.ps1 4,9,16 Джон, Джим, Джейн


Пример 1: С помощью имен параметров вы можете изменить порядок.

PS CLI:. \ Test.ps1 -names john, jim, jane -numbers 4,9,16

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...