簡體   English   中英

從Azure VM中訪問JSON中的變量?

[英]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,這就是您要放入模板的腳本擴展中的內容。

看一下這個例子:

https://github.com/Azure/azure-quickstart-templates/blob/f18a95e857a4caf86b4c2e77e652cec678cd524c/201-vm-winrm-windows/azuredeploy.json

查看“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM