[英]Accessing variables in JSON from within Azure VM?
我將Azure Powershell命令New-AzureRmResourceGroupDeployment
與JSON模板文件一起使用,並且將大量參數提供給將與JSON文件一起使用的命令。 JSON還指示新創建的VM從Azure存儲下載Powershell腳本並運行它。
我需要將一些值從我的Azure Powershell腳本傳遞到該“ VM本地” Powershell腳本。 出於爭論的緣故,假設我的Azure Powershell腳本具有一個變量$foo
,其值為bar
,表示“要在C:\\
(so C:\\bar
)上創建的文件夾的名稱”。
怎么樣?
VM中運行的腳本如何通過任何方式訪問值bar
? 如果我需要將JSON文件用作“ messenger”或其他任何必要的技巧,那就很好。 我認為我不能在從Azure存儲下載它並隨后運行它之間修改“ VM-local” Powershell腳本。
如果在VM上的JSON模板中使用腳本擴展名來運行腳本,則可以為該腳本指定整個cmd行。 在該cmd行上,您將傳遞參數,就像您以交互方式運行它一樣。 IOW,考慮運行該腳本的cmdline,這就是您要放入模板的腳本擴展中的內容。
看一下這個例子:
查看“ commandToExecute”屬性。 您可以看到如何使用參數調用powershell.exe,腳本文件是這些參數之一,然后腳本文件本身也通過變量接受某些參數。
您也可以使用DSC(在JSON中非常相似,但是PS卻非常不同)來執行此操作,但是如果您已經擁有要使用的PS腳本,則應該可以使用。
那是你需要的嗎?
您可以像這樣傳遞變量:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.