gpt4 book ai didi

xml - Azure 虚拟机 REST API 拒绝的 otherUnattendContent 内容

转载 作者:行者123 更新时间:2023-12-03 01:09:14 27 4
gpt4 key购买 nike

我正在编写云编排工具和 Azure REST API(资源管理器)之间的接口(interface),但在测试 Windows extraUnattendContent 功能以使 Unattend.xml 注入(inject)正​​常工作时遇到问题。

为什么 API 服务不接受下面的代码?文档显示了 extraUnattendContent 作为 KV 对对象的示例,但我发现(通过搜索实际的 ARM 规范)它实际上是一个对象列表。它还指定内容部分应采用 base64 编码且大小不大于 4KiB,并包含功能或设置的根元素(不完全确定这意味着什么)。我已经对我认为有效的 XML 组件进行了编码,但它抛出了一个错误(代码和错误如下所示)。我已经使用 API 版本 2016-03-30 和 2015-05-01-preview 进行了尝试,得到了相同的结果。

这是我对 API 服务的请求的 osProfile 摘录。

"osProfile": {
"adminUsername": "winuxadmin",
"computername": "vm331d4bwx",
"windowsConfiguration": {
"additionalUnattendContent": [{
"content": "PFN5bmNocm9ub3VzQ29tbWFuZCB3Y206YWN0aW9uPSJhZGQiPjxDb21tYW5kTGluZT4lU3lzdGVtUm9vdCVcc3lzdGVtMzJcbmV0c2ggYWR2ZmlyZXdhbGwgYWRkIHJ1bGUgbmFtZT0iV2luUk0gSFRUUCA1OTg1IiBwcm90b2NvbD0iVENQIiBkaXI9ImluIiBsb2NhbHBvcnQ9IjU5ODUiIGFjdGlvbj0iYWxsb3ciPC9Db21tYW5kTGluZT48T3JkZXI+MTwvT3JkZXI+PERlc2NyaXB0aW9uPk9wZW4gV2luUk0gSFRUUCBwb3J0PC9EZXNjcmlwdGlvbj48L1N5bmNocm9ub3VzQ29tbWFuZD4=",
"componentName": "Microsoft-Windows-Shell-Setup",
"settingName": "FirstLogonCommands",
"passName": "oobeSystem"
}],
"winRM": {
"listeners": [{
"protocol": "http",
"certificateUrl": null
}]
},
"provisionVMAgent": true
},
"adminPassword": "MyW1nP@ssw0rd"
},

base64 XML extraUnattendContent[0].content 解码为此(注意:我也做了相同的测试,但内容 XML 包装在根设置节点中- <FirstLogonCommands>...</FirstLogonCommands> - 但结果是一样的)。这里实际的 Windows 命令并不重要,更可能需要是 WinRM 命令才能允许未加密的连接,但问题并不真正与命令相关 -

<SynchronousCommand wcm:action="add">
<CommandLine>%SystemRoot%\system32\netsh advfirewall add rule name="WinRM HTTP 5985" protocol="TCP" dir="in" localport="5985" action="allow"</CommandLine>
<Order>1</Order>
<Description>Enable QuickEdit mode</Description>
</SynchronousCommand>

一旦我意识到官方文档关于additionalUnattendContent的格式是错误的(它应该是一个对象列表而不仅仅是一个对象),我就能够从API服务中得到以下错误 -

statusCode:BadRequest serviceRequestId:<req-id> statusMessage:
{
"error":
{
"code": "InvalidParameter",
"target": "windowsConfiguration.additionalUnattendContent.content",
"message": "The value of parameter windowsConfiguration.additionalUnattendContent.content is invalid."
}
}

最佳答案

我的经验是:

  • 它是一个数组
  • 不应采用 Base64 编码
  • 带有冒号的属性会导致奇怪的错误(例如 wcm:action=...)

这是一个工作示例:

"additionalUnattendContent": [
{
"passName": "oobesystem",
"componentName": "Microsoft-Windows-Shell-Setup",
"settingName": "FirstLogonCommands",
"content": "<FirstLogonCommands><SynchronousCommand><CommandLine>shutdown /r /t 0 /c \"initial reboot\"</CommandLine><Description>reboot</Description><Order>1</Order></SynchronousCommand></FirstLogonCommands>"
}
]

这是关于该主题的讨论: https://github.com/Azure/azure-quickstart-templates/issues/1407

关于xml - Azure 虚拟机 REST API 拒绝的 otherUnattendContent 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36169894/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com