Powershell是否等效于Azure CLI“ az vm run-command invoke”?

时间:2018-07-20 09:54:31

标签: powershell azure-cli

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

我在powershell中找到的全部是Invoke-AzureRmVMRunCommand,它带有一个“脚本文件路径”(这意味着我必须找到一种首先将脚本文件上传到VM的方法!真是麻烦!),而不是直接输入命令

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

谢谢。

2 个答案:

答案 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