Назначение переменной внутри AWS ssm не работает

Я пытаюсь выполнить команду ниже на AWS SSM:

Parameters = @{
           commands = @(
           "Write-Host userid is  $userID password $($password)"
           '$userID2 = $userID'
           '$password2 = $password'
           "Write-Host userid is  $userID2 password $($password2)"
       ) 
        }

Первый оператор Write-Host выводит правильные значения $userID и $password, но после присвоения новой переменной вторая переменная Write-Host выводит пустые значения для обеих переменных. Я делаю что-то неправильно? Я также пытался получить значения $userID и $password с двойными кавычками, но безуспешно.


person tavier    schedule 28.07.2020    source источник


Ответы (1)


Для тех, кто сталкивается с той же проблемой. Проблема в том, что перед отправкой команд в EC2 AWS заменит команды значениями всех переменных, и, следовательно, мы не можем напрямую повторно использовать переменные внутри команд. Это обходной путь, который мне пришлось придумать:

$userID = 'testuser1'
$password = 'testpassword'
$userIdString = "`$userID2 = '$userID'"
$passwordString = "`$password2 = '$password'"

Parameters = @{
           commands = @(
           "Write-Host userid is  $userID password $($password)"
           "$userIdString"
           "$passwordString"
           "Write-Host userid is  $userID2 password $($password2)"
       ) 
        }

Теперь он печатает $userID2 и $password2 нормально.

person tavier    schedule 28.07.2020