我正在使用以下命令从azure xplat cli创建Windows VM:
azure network vnet create --location "East US" testnet
azure vm create --vm-name xplattest3 --location "East US" --virtual-network-name testnet --rdp 3389 xplattest3 ad072bd3082149369c449ba5832401ae__Windows-Server-Remote-Desktop-Session-Host-on-Windows-Server-2012-R2-20150828-0350 username SAFEpassword!
创建Windows VM后,我想执行powershell脚本来配置服务器。据我所知,这是通过执行CustomScriptExtension来完成的。
我找到了几个PowerShell示例,但没有Xplat cli的示例。
例如,我希望运行以下HelloWorld PowerShell script:
New-Item -ItemType directory -Path C:\HelloWorld
阅读文档后,我应该可以通过执行类似的操作来运行CustomExtensionScript(以下命令不起作用):
azure vm extension set xplattest3 CustomScriptExtension Microsoft.Compute 1.4 -i '{"URI":["https://gist.githubusercontent.com/tk421/8b7dd37145eaa8f82e2f/raw/36c11aafd3f5d6b4af97aab9ef5303d80e8ab29b/azureCustomScriptExtensionTest"] }'
我认为问题是参数-i
。我无法在互联网上找到一个例子。有一些参考和文档,例如MSDN和Github,但没有示例。
因此,我的问题:如何在使用PowerShell
在Azure中创建Windows VM后执行xplat cli
脚本?
请注意,我当前的方法是CustomScriptExtension
,但是会考虑允许引导配置脚本的任何!
编辑我怎么知道它失败了?
运行命令azure vm extension ...
后:
xplat cli
确认命令已正确执行。C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\
,但没有脚本下载到C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\{version-number}\Downloads\{iteration}
C:\HelloWorld
,这意味着脚本的内容尚未执行。答案 0 :(得分:0)
我在阅读MSDN文档后使用的参数(The Json)不正确。但是,您可以通过阅读C#代码获得正确参数的线索。
最后的命令是:
azure vm extension set xplattest3 CustomScriptExtension Microsoft.Compute 1.4 -i '{"fileUris":["https://macstoragetest.blob.core.windows.net/testcontainername/createFolder.ps1"], "commandToExecute": "powershell -ExecutionPolicy Unrestricted -file createFolder.ps1" }'
此命令成功创建C:\HelloWorld
目录。
注意:我决定将脚本上传到Azure read in a post以及必需的文档中。但是我刚刚测试从Github下载原始脚本并且工作正常,所以我猜文档有点过时了。
编辑:我创建了一篇详细的文章,解释了how to provision windows servers with xplat-cli in Azure。