我正在使用Azure Powershell命令New-AzureRmResourceGroupDeployment
和JSON模板文件,并且我将一些参数提供给它将与JSON文件一起使用的命令。 JSON还指示新创建的VM从Azure存储下载Powershell脚本并运行它。
我需要将Azure Powershell脚本中的一些值传递给“VM-local”Powershell脚本。为了论证,让我们说我的Azure Powershell脚本有一个变量$foo
,其值为bar
,表示“要在C:\
上创建的文件夹的名称(所以{{1} }})”。
如何?
如何在VM中运行的脚本访问值C:\bar
(无论如何)?如果我需要将JSON文件用作“信使”或任何其他必要的技巧,那就没问题。我不认为我可以在从Azure存储下载并随后运行它之前修改“VM-local”Powershell脚本。
答案 0 :(得分:1)
如果在VM上的JSON模板中使用脚本扩展来运行脚本,则可以为该脚本指定整个cmd行。在该cmd行上,您将传递参数,就像交互式运行它一样。 IOW,考虑运行该脚本的cmdline以及您将放入模板的脚本扩展中的内容。
看一下这个例子:
查看" commandToExecute"属性。您可以看到如何使用params调用powershell.exe,脚本文件是其中一个参数,然后脚本文件本身也通过变量接受一些参数。
您也可以使用DSC(在JSON中非常相似,但PS非常相似)但如果您已经有一个PS脚本要使用,这应该可行。
这就是你需要的吗?
答案 1 :(得分:0)
你可以传递这样的变量:
New-AzureRmResourceGroupDeployment -Name ((Get-ChildItem $TemplateFile).BaseName + '-' + ((Get-Date).ToUniversalTime()).ToString('MMdd-HHmm')) `
-ResourceGroupName $ResourceGroupName `
-TemplateFile $TemplateFile -TemplateParameterObject @{accountName=$AutomationAccount;moduleName=$Name;moduleURI=$ModuleURI} -Force -Verbose