2016-03-23 15 views
1

私はクラウドオーケストレーションツールとAzure REST API(Resource Manager)の間のインターフェイスを作成していますが、Windows additionalUnattendContent機能をテストしてUnattend.xml注射が働いている。additionalUnattendContentのコンテンツがAzure仮想マシンREST APIによって拒否されています

以下のコードは、APIサービスで受け付けられないのはなぜですか?このドキュメントでは、additionalUnattendContentの例をKVペアオブジェクトとして示していますが、実際にはオブジェクトのリストであることがわかりました。また、コンテンツ部分がbase64でエンコードされ、4KiB以下のサイズで、機能や設定のルート要素を含めるように指定しています(これが何を意味するかは完全には分かりません)。私は有効なXMLコンポーネントだと思っていますが、エラーが発生します(コードとエラーは以下に記載されています)。私はAPIバージョン2016-03-30と2015-05-01プレビューの両方を同じ結果で使用して試しました。

これは、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": "[email protected]" 
}, 

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." 
    } 
} 

答えて

2

私の経験では、されています:

  • 配列です
  • これはbase64でエンコードしないでください。
  • 属性が異常なエラーを引き起こします。 WCM:アクション= ...)ここで

は実施例である。そのため https://github.com/Azure/azure-quickstart-templates/issues/1407

+0

ありがとう:

ここ
"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>" } ] 

がトピックについての議論です。これは動作しているようです! – 01000101

+0

+1 Q&A看板ありがとうございます!第2の問題にも苦闘しなければならなかった!実際にxmlns名前空間情報(xmlns:wcm = "http://schemas.microsoft.com/WMIConfig/2002/State")も問題を修正できるかどうか疑問に思いますか?しかし、まだそれを試して取得していない。 –

関連する問題