如何在Azure Web App应用程序设置中使用PowerShell对名称错误的属性进行转义

时间:2018-08-02 09:57:46

标签: powershell azure azure-web-sites hashtable appsettings

我有一组

收集的Azure Web App属性

$properties = (Invoke-AzureRMResourceAction -ResourceGroupName $ResourceGroup -ResourceType Microsoft.Web/sites/Config -Name $Site/appsettings -Action list -ApiVersion 2015-08-01 -Force).Properties

此外,我制作了一个哈希表来存储这些属性

$hashtable = @{}
$properties | Get-Member -MemberType NoteProperty | % { $hashtable[$_.Name] = $properties.($_.Name) }

我遇到的问题是将格式错误的属性更改为新值:

PS C:\> $hashtable
Name Value
---- -----
AzureAd:ClientId XXXXXX-1621-42ff-85cd-XXXXXXXXX

PS C:\> $hashtable.AzureAd:ClientId = "YYYYYY-1621-42ff-85cd-YYYYYYYY"

At line:1 char:14
+ $hashtable.AzureAd:ClientId = "YYYYYY-1621-42ff-85cd-YYYYYYY ...
+              ~~~~
Unexpected token ':ClientId' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken

因此不需要命令Set-AzureRMWebApp -Name $Site -AppSettings $hashtable

是否有机会逃脱不良属性以执行脚本,还是在接下来选择正确的应用设置名称\变量时要小心?

1 个答案:

答案 0 :(得分:0)

您可以将属性用双引号引起来-

$hashtable."AzureAd:ClientId" = "YYYYYY-1621-42ff-85cd-YYYYYYYY"

您也可以使用单引号(''),因为属性中没有可替换的变量-

$hashtable.'AzureAd:ClientId' = "YYYYYY-1621-42ff-85cd-YYYYYYYY"