Как передать параметры от дочернего к родительскому в Azure RunBooks

Итак, можно было бы подумать, что это будет довольно просто, но я занимаюсь этим уже несколько дней.

В основном это так:

Родитель.ps1

  #calling the childrunbook
./childrunbook.ps1 -FirstName 'John'-LastName 'Snow'
 $newGreeting = $greeting + 'John Snow'
 Write-Output $newGreeting

Ребенок.ps1

param(
   [string]$Firstname, 
   [string]$Lastname
)

$greeting = 'Hello from the Child Runbook'
Write-Output $greeting

Результат

#I was hoping to get 
"Hello from the Child Runbook John Snow"
#But all I'm getting is:
"John Snow"  :-( 

Я могу легко сделать это в Powershell, но как только я помещу тот же код в Powershell Runbooks на Azure, это не сработает. Я думал, что это может быть проблема с одинарной/двойной кавычкой, но это не привело к какому-либо прогрессу. Любые идеи?

Заранее спасибо!


person Kenneth Edwards    schedule 01.02.2018    source источник


Ответы (1)


Когда вы просто запускаете такой скрипт:

./childrunbook.ps1 -FirstName 'John'-LastName 'Snow'

он выполняется в своей собственной области — это означает, что все, что записывается в переменные внутри скрипта, изменяет только локальную копию этой переменной, и изменения не затрагивают ничего в родительская область.

Чтобы выполнить скрипт в области вызова, используйте оператор источника с точкой .:

. ./childrunbook.ps1 -FirstName 'John'-LastName 'Snow'

В качестве альтернативы вы просто назначите вывод из дочернего скрипта переменной в области вызова:

$greeting = ./childrunbook.ps1 -FirstName 'John'-LastName 'Snow'
$newGreeting = $greeting + 'John Snow'
Write-Output $newGreeting
person Mathias R. Jessen    schedule 01.02.2018
comment
Спасибо, @Mathias R. Jessen, я должен тебе пиво! - person Kenneth Edwards; 01.02.2018