Powershell 相当于 Azure CLI "az vm run-command invoke"?

Powershell equivalent to Azure CLI "az vm run-command invoke"?

我四处搜索以在我的 Windows 笔记本电脑上通过 Powershell 在我的 Linux 虚拟机上执行命令。我发现有 Azure CLI 命令 az vm run-command invoke 来调用命令。

我在 powershell 中找到的全部是 Invoke-AzureRmVMRunCommand,它需要一个 "script file path"(这意味着我必须先找到一种方法将脚本文件上传到 VM!真麻烦!)而不是将直接命令。

Powershell 中是否有 az vm run-command invoke 等效命令?

谢谢。

查看此 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"}

希望对您有所帮助。

结果,我误解了命令 Invoke-AzureRmVMRunCommand 。在命令 Invoke-AzureRmVMRunCommand 中,参数 ScriptPath 实际上是一个本地文件——而不是上传到 VM 上的文件。

所以我能做的就是将我所有的 bash 脚本放在文件 system_setup.sh 中,与我的 Powershell 位于同一目录并调用以下命令:

Invoke-AzureRmVMRunCommand -ResourceGroupName $ResourceGroupName -Name $VMName -CommandId 'RunShellScript' -ScriptPath '.\system_setup.sh'

然后Azure会在远程LinuxVM的/var/lib/waagent/run-command/download/0[=10]目录下以root用户(不是为VM设置的ssh用户)上传并执行这个shell脚本=]