如何在Azure RunBooks中将参数从Child传递给Parent

时间:2018-02-01 00:33:51

标签: powershell azure azure-automation runbook

所以,人们会认为这很简单,但我现在已经处理了几天了。

基本上就是这样:

Parent.ps1

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

Child.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中轻松完成这项工作,但是一旦我将相同的代码放在Azure上的Powershell Runbook中,就不行了。我认为这可能是单引号/双引号问题,但这并没有带来任何进展。有任何想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

当您运行这样的脚本时:

https

它在其自己的范围中执行 - 这意味着写入脚本中的变量的任何内容都只会修改该变量的本地副本,以及更改不会触及父范围内的任何内容。

要在调用范围中执行脚本,请使用点源运算符./childrunbook.ps1 -FirstName 'John'-LastName 'Snow'

.

或者,您只需将子脚本的输出分配给调用范围中的变量:

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