как использовать новую переменную, динамически создаваемую - PullRequest
0 голосов
/ 13 января 2020

Вот простой сценарий:


$MyDb = "xt1"
$Var01 = $MyDb
$Var01
$Var02 = "Error"
$DynamicMyVar = "{0}Custom{1}" -f $var02,$Var01
new-variable -name $DynamicMyVar
$DynamicMyVar

Значение переменной $ DynamicMyVar (фактически) равно "ErrorCustomxt1". И мне нужно использовать это значение как переменную, не зная, с какими значениями оно было построено. $ var01 и $ var02 - это переменные, которые получают значения по программе, и я их не знаю, но мне нужно создать новое имя переменной, которое будет состоять из их значений, и поэтому использовать новую переменную на следующих шагах моей программы .

Спасибо!

Ответы [ 2 ]

1 голос
/ 13 января 2020

Почему вы не используете хеш-таблицу?

$hash = [hashtable]::new()

$hash['Var01'] = "xt1"
$hash['Var02'] = "Error"

$newKey = $hash['Var01'] + 'Custom' + $hash['Var02']

$hash[ $newKey ] = "Hi"

$newKey
$hash[ $newKey ]
0 голосов
/ 13 января 2020

Я решил свою проблему с помощью выражения-выражения, которое может манипулировать динамической переменной c (определяется программой и неизвестно программисту). Первым шагом является определение новой переменной (чтобы мы могли использовать ее позже в программе). Вторым шагом является создание выражения. Третий шаг - выполнить это выражение, используя переменную. Вот скрипт:

Определение переменной $ Db Error ...

$Var01 = "xt1"
$Var01
$Var02 = "Error"
$DynamicMyVar = "{0}{1}" -f $var01,$Var02
new-variable -name $DynamicMyVar
$DynamicMyVar


$MyDb = "xt1"
# Initializing Error$MyDb ...
$MyStmt = "$"+$MyDb+"Error=0"
$MyStmt
Invoke-Expression $MyStmt
# Incrementing Error$MyDb ...
$MyStmt = "$"+$MyDb+"Error="+"$"+$Mydb+"Error+1"
$MyStmt
Invoke-Expression $MyStmt
#
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...