Powershell для каждой переменной по номеру - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть следующие переменные:

$testvar_1 = 1, 100
$testvar_2 = 1, 20
$testvar_3 = 0, 260
$testvar_4 = 1, 10

Как создать цикл for, который будет проходить через каждый массив переменных?

* Когда вы не знаете общее числопеременных $ testvar_n и он постоянно меняется. *

Что-то вроде For Each $testvar_n do { $testvar_n[1] = $testvar_n[1] + 10 }

Извините, очень плохо знаком с PowerShell.

РЕДАКТИРОВАТЬ:

Возможно что-то, что может работать, как показано ниже?

get-variable testvar* | ForEach-Object -Process {$_[1]+10}

1 Ответ

2 голосов
/ 06 ноября 2019

Вы можете сделать что-то вроде следующего, если вам нужно обновить существующие переменные.

foreach ($var in (Get-Variable -Name testvar_[0-9]* -ValueOnly)) {
    $var[1] += 10
}

Примечание: [0-9] - это оператор диапазона подстановочных знаков для любой одной цифры. Подстановочный знак * соответствует нулю или более символов, что может соответствовать, например, testvar_1abc. Вы можете дополнительно предотвратить это с помощью условия Where-Object, если это необходимо. См. Ниже для дальнейшей фильтрации.

$vars = Get-Variable -Name testvar_[0-9]* | Where Name -match '^testvar_\d+$'
foreach ($var in $vars) {
        $var.Value[1] += 10
}
...