创建 Azure VirtualMachineExtension 失败

Creating Azure VirtualMachineExtension failure

我有一台 Windows 机器,我想使用 azure python SDK 添加 VM 扩展,我发送以下请求

{'location': 'westus', 
'tags': None, 
'publisher': 'Microsoft.Compute', 
'virtual_machine_extension_type': 'CustomScriptExtension', 
'type_handler_version': '1.4', 
'settings': '{
"file_uris": ["https://mysite.azurescripts.net/ps_enable_winrm_http.ps1"],
 "command_to_execute": "powershell -ExecutionPolicy Unrestricted -file ps_enable_winrm_http.ps1"}'
}

但是发生的是它给出了以下异常

configure virtual_machine '946b4246-a604-4b01-9e6a-09ed64a93bdb' failed with this error : 
VM has reported a failure when processing extension '13da0dc5-09c0-4e56-a35d-fdbc42432e11'.
Error message: "Invalid handler configuration. Exiting. 
Error Message: Expecting state 'Element'.. Encountered 'Text'  with name '', namespace ''. "

More information on troubleshooting is available at https://aka.ms/VMExtensionCSEWindowsTroubleshoot 

添加我使用的简单代码片段

vm_extension_name = "{0}".format(uuid4())
vm_extension_params = {
    'location': location_val,
    'tags': tags_val,
    'publisher': 'Microsoft.Compute',
    'virtual_machine_extension_type': 'CustomScriptExtension',
    'type_handler_version': type_handler_version,
    'auto_upgrade_minor_version': True,
    'settings': json.dumps({
        'fileUris': file_uris,
        'commandToExecute': command_to_execute
     })
}
logger.info("sending {0}".format(vm_extension_params))

任何想法,我应该发送不同的东西还是我从上面的请求中遗漏了导致问题的东西

提前感谢您的帮助

此致,

当我们使用python sdk 安装自定义脚本扩展时,我们应该创建对象VirtualMachineExtension。它的参数settings应该是Object。但是你定义为str。请通过删除 '' 对其进行更新。详情请参考document

例如

from azure.mgmt.compute import ComputeManagementClient
from azure.common.credentials import ServicePrincipalCredentials
AZURE_TENANT_ID= ''
AZURE_CLIENT_ID=''
AZURE_CLIENT_SECRET='' 
AZURE_SUBSCRIPTION_ID=''

credentials = ServicePrincipalCredentials(client_id=AZURE_CLIENT_ID,secret=AZURE_CLIENT_SECRET,tenant=AZURE_TENANT_ID)
compute_client = ComputeManagementClient(credentials, AZURE_SUBSCRIPTION_ID)

resource_group_name='stan'
vm_name='win2016'
params_create = {
        'location':'CentralUS',
        'tags': None,
        'publisher': 'Microsoft.Compute',
        'virtual_machine_extension_type': 'CustomScriptExtension',
        'type_handler_version': '1.4',
        'settings':
        {
            'fileUris': ['https://***/test/test.ps1'],
            'commandToExecute': 'powershell -ExecutionPolicy Unrestricted -File test.ps1'
        }
 }

ext_poller = compute_client.virtual_machine_extensions.create_or_update(
    resource_group_name,
    vm_name,
    'test',
    params_create,
)
ext = ext_poller.result()
print(ext)