2016-04-25 2 views
2

Hallo Stackoverflow Gemeinschaft,Microsoft Azure Provisioning JSON Template Output in Powershell

ich ein Problem mit Microsoft Azure Provisioning haben, ich versuche SharedAccessPolicyKeys für Ressourcen wie IoT-Hubs oder Ereignis-Hubs zugreifen. Ich versuche, dies mit listKeys Funktion und geben diese in der Vorlage JSON-Datei:

"outputs": { 
"hubKeys": { 
    "value": "[listKeys(resourceId('Microsoft.Devices/IotHubs', parameters('hubName')), '2016-02-03')]", 
    "type": "object" 
} 

}

Wenn ich Ausgang der zurückgegebene Objekt in Windows Powershell sieht es wie folgt aus:

Type      : Array 
    IsReadOnly     : False 
    HasValues     : True 
    First      : {keyName, primaryKey, secondaryKey, rights} 
    Last      : {keyName, primaryKey, secondaryKey, rights} 
    Count      : 5 
    Parent      : {{ 
            "keyName": "iothubowner", 
            "primaryKey": "dZVFGkIysIgVRKjxlZsCWdk6KGa4rpBFlY6BOLmaiD8=", 
            "secondaryKey": "HtRYETAdgja/TBSS3sVTshKaGzZWMLbZC6GR60emSV4=", 
            "rights": "RegistryWrite, ServiceConnect, DeviceConnect" 
           } { 
            "keyName": "service", 
            "primaryKey": "DGOujP2tBTiTTdKxukTx7umeYFFlDEhoih7fb0tP3i8=", 
            "secondaryKey": "B+6j1nfEc59GAeJQNakNKolTBoR9kc5W+TUNzRXmDpc=", 
            "rights": "ServiceConnect" 
           } { 
            "keyName": "device", 
            "primaryKey": "qxmRJVH0yVhSkLEz8JaHhtDJaDofpw4SEKkZNlBwp7c=", 
            "secondaryKey": "RhUuME9EnnUsE2sixswaiTofKsVVfCQNIllwkHgY/8A=", 
            "rights": "DeviceConnect" 
           } { 
            "keyName": "registryRead", 
            "primaryKey": "pEpHrL4amd9+7pvl6uCiYHL3rZhxV76tZ1P9bERO6Xc=", 
            "secondaryKey": "6h4UBKd4WPkdpUfl0Hi3G5YKgB3LmtDMbgXDYx3eKrk=", 
            "rights": "RegistryRead" 
           } { 
            "keyName": "registryReadWrite", 
            "primaryKey": "HpCxKVa1686A8vOfNVBUzYSe2YJmKIwwAzxUh5DokuY=", 
            "secondaryKey": "PGeYYID9y6cClqGD1rl4koLNySc7kOGK6VuNlBiwqmo=", 
            "rights": "RegistryWrite" 
           }} 
    Root      : {value} 
    Next      : 
    Previous     : 
    Path      : value 
    LineNumber     : 0 
    LinePosition    : 0 
    AllowNew     : True 
    AllowEdit     : True 
    AllowRemove    : True 
    SupportsChangeNotification : True 
    SupportsSearching   : False 
    SupportsSorting   : False 
    IsSorted     : False 
    SortProperty    : 
    SortDirection    : Ascending 
    IsFixedSize    : False 
    SyncRoot     : System.Object 
    IsSynchronized    : False 

Meine Frage: Kann mir jemand sagen, wie man auf den "primaryKey" in den verschiedenen "keyName" -Objekten zugreifen kann? Insbesondere benötige ich den PrimaryKey für "Service".

kann ich das Objekt mit

$Key = New-AzureRmResourceGroupDeployment (deleted parameters for this post) 
    Write-Output $Key.Outputs.hubKeys 

drucke ich Dinge schon versucht wie $ Key.Outputs.hubKeys.value.Parents.values ​​.... und unzählige andere Möglichkeiten. Kann jemand den Wert erhalten?

Danke, Arno

Antwort

1

Die Probe here zeigt eine Möglichkeit, dies zu erreichen. Die ARM-Vorlage erstellt einen IoT Hub- und Azure Stream Analytics-Job, der mithilfe der generierten Schlüsselwerte eine Verbindung zum Hub herstellt.

Diese Schnipsel werden die wichtigsten Teile:

/* Create IoT Hub */ 
{ 
    "apiVersion": "2016-02-03", 
    "type": "Microsoft.Devices/IotHubs", 
    "name": "[variables('iotHubName')]", 
    "location": "[resourceGroup().location]", 
    "sku": "[parameters('iotHubSku')]" 
}, 

/* Part of the ASA definition */ 
"datasource": { 
    "type": "Microsoft.Devices/IotHubs", 
    "properties": { 
    "iotHubNamespace": "[variables('iotHubName')]", 
    "sharedAccessPolicyName": "[variables('iotHubKeyName')]", 
    "sharedAccessPolicyKey": "[listKeys(resourceId('Microsoft.Devices/IotHubs/Iothubkeys', variables('iotHubName'), variables('iotHubKeyName')), '2016-02-03').primaryKey]", 
    "consumerGroupName": "[variables('archiveJobConsumerGroupName')]" 
    } 
} 
Verwandte Themen