Python Azure SDK virtual_machines.run_command

Python Azure SDK virtual_machines.run_command

使用 python azure sdk 时遇到问题。当 运行 在虚拟机“运行 命令”部分从 portal.azure.com 执行 powershell 命令时,我能够成功执行 New-Item C:\test2.txt

当我从 python azure sdk 运行 它时,我无法执行此任务。它完成了,我可以通过查看 vm 的 activity 日志看到命令已发送到机器。我错过了什么吗?

def run_command(vm_name):
    compute_client = get_compute_connection()
    
    run_command_parameters = {
      'command_id': 'RunPowerShellScript',
      'script': [
          'New-Item C:\test2.txt'
      ]
    }
    
    command = compute_client.virtual_machines.run_command(
        resource_group,
        vm_name,
        run_command_parameters
    )
    
    r = command.result()
    print(r)

run_command('vm12345')

这个returns

{'additional_properties': {}, 'value': [<azure.mgmt.compute.v2019_12_01.models._models_py3.InstanceViewStatus object at 0x0000029C15A7A108>, <azure.mgmt.compute.v2019_12_01.models._models_py3.InstanceViewStatus object at 0x0000029C15A7A648>]}

这是预期的输出类型RunCommandResult您可以在此处找到详细信息: https://docs.microsoft.com/en-us/python/api/azure-mgmt-compute/azure.mgmt.compute.v2019_07_01.models.runcommandresult?view=azure-python

例如,要得到stdout/stderr:r.value[0].message

其他 post 也可能有帮助:

(我在 MS SDK 团队工作)

正斜杠引起的问题'New-Item C:\test2.txt'。更改为 'New-Item C:/test2.txt' 解决了问题。

run_command_parameters = {
    'command_id': 'RunPowerShellScript', 
    'script': [
        'New-Item C:/test2.txt'
    ]
}