У меня много переменных от А до Я.
$a = "bike"
$b = "car"
$c = "road"
...
$z = "street"
$array = @()
97..122 | %{$array += "$"+[char]$_}
$array
Когда я набираю $ array, он возвращает мне:
$a
$b
$c
...
$z
Но я хочу получить значения этих переменных, а не «$ a» и т. Д.
3 ответа
Я думаю, что он действительно хочет добавить содержимое этих переменных в свой массив, что можно сделать с помощью Get-Variable
как такового:
$a = "bike"
$b = "car"
$c = "road"
$array = @()
97..99 | %{$array += Get-Variable -name ([char]$_) -ValueOnly}
$array
Попробуйте хеш:
$Hash = @{
a = "bike"
b = "car"
c = "road"
...
z = "street"
}
Вывод $Hash
дает вам:
Name Value
---- -----
c road
z street
b car
a bike
Это то, что вы ищете?
Вы можете использовать Get-Variable
для доступа к переменным:
97..122 | %{$array += Get-Variable ([char]$_) -Value}
Но могу ли я предложить другой подход? Вместо того, чтобы создавать десятки простых переменных, почему бы не использовать хэш-таблицу? Что-то вроде:
$table = @{
"a" = "bike"
"b" = "car"
"c" = "road"
...
"z" = "street"
}
Затем вы можете получить доступ к значениям через индексацию:
$table["a"] # > "bike"
$table["c"] # > "car"
Если у вас много простых переменных вида $var1
, $var2
, $var3
или $vara
, $varb
, $varc
, вам следует остановиться и пересмотрите свой дизайн. Обычно вы можете сделать свой код намного более элегантным, просто используя один из контейнеров PowerShell, например массив или хеш-таблицу, для первоначального хранения значений.
Похожие вопросы
Новые вопросы
powershell
PowerShell - это кроссплатформенная утилита командной строки и сценариев от Microsoft. Используйте этот тег только для вопросов о написании и выполнении сценариев PowerShell. Вопросы программирования, относящиеся к кроссплатформенной версии PowerShell Core (Windows, macOS и Linux), должны быть помечены [powershell-core]. Вопросы о системном администрировании следует задавать в случае сбоя суперпользователя или сервера.