2016-04-11 18 views
2

私はAzureでWebApp設定を構成するために "Set-AzureRmResource"を使用しようとしています。Set-AzureRmResourceを使用する - JSON Powershell構文?

$PropertiesObject = @{ 
"alwaysOn" = $true; 
} 
Set-AzureRmResource -PropertyObject $PropertiesObject -ResourceGroupName $ResourceGroupName -ResourceType Microsoft.Web/sites/config -ResourceName $SiteName/web -ApiVersion 2015-08-01 -Force 
### in this case "alwaysOn' sits within "properties": {. 

が、私は今、しかし、この1つはネストされている別のプロパティを設定したい:

は、私が「のAlwaysOn = True」に設定して働くここにコードの一部を持っています。例:

"azureBlobStorage": { 
"sasUrl": null, 
"retentionInDays": null, 
"enabled": false 
} 
### in this case I want to set SasUrl which sits within "properties"{ AzureBlobStorage { 

このようにネストされたプロパティを設定するために使用する構文が失われています。

申し訳ありません私の用語が正しくない場合は、powershellとJsonはかなり新しいものです。

Azureのドキュメントには、単に状態:

# SET web 
$PropertiesObject = @{ 
#Property = value; 
} 
"properties": { 
"httpLogs": { 
    "fileSystem": { 
    "retentionInMb": 35, 
    "retentionInDays": null, 
    "enabled": false 
    }, 
    "azureBlobStorage": { 
    "sasUrl": null, 
    "retentionInDays": null, 
    "enabled": false 
    } 
}, 
+0

もazureBlobStorage' 'ことに注意してください。ここApplicationLogsのファイルシステムのロギングをオフにする例を示します。 '$ SiteName/web'ではなく' $ SiteName/logs'の下にあります。 –

答えて

2

を使用しますでる;私は内部オブジェクトを作成するのではなく、より簡単な方法でHashtablesを使って作業しています。

$propertiesObject = [ordered] @{ 
             'applicationLogs' = @{ 
                 'fileSystem' = @{ 
                     'level' = 'Off' 
                  }   
             } 
         } 
Set-AzureRmResource -PropertyObject $propertiesObject -ResourceGroupName $resourceGroup -ResourceType Microsoft.Web/sites/config -ResourceName "$($webAppName)/logs" -ApiVersion 2015-08-01 -Force 

あなたはHttpLogs sasUrlプロパティを設定し、元のOP要求のために同じことを行うことができます:

$propertiesObject = [ordered] @{ 
             'httpLogs' = @{ 
                 'azureBlobStorage' = @{ 
                     "sasUrl": "SASURL" 
                  }   
             } 
         } 
Set-AzureRmResource -PropertyObject $propertiesObject -ResourceGroupName $resourceGroup -ResourceType Microsoft.Web/sites/config -ResourceName "$($webAppName)/logs" -ApiVersion 2015-08-01 -Force 
+0

- あなたのアップデートを投稿してくれてありがとう、これははるかに簡単で簡単な方法です。私はそれがJSONの書式設定にすべて入っていることがわかりました。 – James

0

私もしばらくはこれで苦労しました!

私はそれをカバーする答えhereを持っています。基本的には、内側のオブジェクトを作成し、そのオブジェクトを外側のプロパティに追加する必要があります。あなたは

{ 
"Property": [ 
     { 
      "prop2": 1, 
      "prop1": "string" 
     } 
    ] 
} 

ような何かをしたい場合

だから、あなたは

$InnerPropertiesObject = @{ 
     prop1 = "string" 
     prop2 = 1 
     } 
$PropertiesObject = @{ 
    "Property" = [Object[]]$InnerPropertiesObject 
} 

を使用して、他の誰がこれを見て、それを理解することはできません念の

New-AzureRmResource -Name $ResourceName ` 
       -Location $ResourceLocation ` 
       -PropertyObject $PropertiesObject ` 
       -ResourceGroupName examplecomRG ` 
       -ResourceType $resourceType ` 
       -ApiVersion 2015-08-01 -Force 
+0

こんにちはマイケル、お返事ありがとうございます。 ハッシュテーブルはまだわかりませんが、読んで学ぶことができます。 JSONテンプレートを読む私は、正しい値を設定するために別のレベルまで深くする必要があると思うので、私はあなたの例に従い、さらにそれを入れ子にすることができます。例: "properties":{"httpLogs":{"azureBlobStorage" – James

+0

@Jamesハステーブルを理解できるようにする方法を考えていたのです! (彼らは狂ったこと!) - とにかく少しでも良くなっています。しかし、あなたはそれらをさらにネストすることができるはずです –

関連する問題