我四处搜寻以通过Windows笔记本电脑上的Powershell在Linux VM上执行命令。我发现有Azure CLI命令az vm run-command invoke
来调用命令。
我在powershell中找到的全部是Invoke-AzureRmVMRunCommand
,它带有一个“脚本文件路径”(这意味着我必须找到一种首先将脚本文件上传到VM的方法!真是麻烦!),而不是直接输入命令
Powershell中是否有az vm run-command invoke
个等效命令?
谢谢。
答案 0 :(得分:0)
查看此Microsoft文档页面的PowerShell部分: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/run-command#powershell
这是我运行的一个简单的
$resource_name="myVM"
$resource_group="myRG"
az vm run-command invoke -g "${resource_group}" -n "${resource_name}" --command-id
RunPowerShellScript' --scripts "Write-Output 'testing russ'"
输出为:
{ "additionalProperties": {}, "endTime": "2018-07-25T00:09:42.479247+00:00", error": null, "name": "2a535b1a-e561-4a62-af43-c3c5c279bbcd", "output": [ { code": "ComponentStatus/StdOut/succeeded", "displayStatus": "Provisioning ucceeded", level": "Info", "message": "testing russ" }, { "code": ComponentStatus/StdErr/succeeded", "displayStatus": "Provisioning succeeded", level": "Info", "message": "" } ], "startTime": "2018-07-5T00:09:09.605015+00:00", "status": "Succeeded"}
希望这会有所帮助。
答案 1 :(得分:0)
结果,我误解了命令Invoke-AzureRmVMRunCommand。在命令Invoke-AzureRmVMRunCommand中,参数ScriptPath实际上是本地文件,而不是在VM上上传的文件。
所以我所能做的就是将所有bash脚本放在与Powershell相同目录下的system_setup.sh文件中,并调用以下命令:
Invoke-AzureRmVMRunCommand -ResourceGroupName $ ResourceGroupName -Name $ VMName -CommandId 'RunShellScript'-ScriptPath'。\ system_setup.sh'
然后,Azure将以root用户(不是VM的ssh用户集)的身份在远程Linux VM上上传并执行此Shell脚本,该目录位于/ var / lib / waagent / run-command / download / 0