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脚本=]
我四处搜索以在我的 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脚本=]