![](/img/trans.png)
[英]Azure rest api - APIM policy XML errors
[英]additionalUnattendContent content being rejected by Azure Virtual Machines REST API
我正在編寫雲編排工具和Azure REST API(資源管理器)之間的接口,但是在測試Windows AdditionalUnattendContent功能以使Unattend.xml注入正常工作時遇到了問題。
為什么API服務不接受以下代碼? 該文檔顯示了一個額外的實例UnattendContent作為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 AdditionalUnattendContent [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."
}
}
我的經驗是:
這是一個工作示例:
"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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.