如何在 Azure Web 应用程序设置中使用 PowerShell 转义错误命名的 属性

How to escape a badly-named property using PowerShell in Azure Web App app settings

我有一组由

收集的 Azure Web App 属性

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

此外,我创建了一个散列 table 来存储这些属性

$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

是否有机会逃脱可怜的 属性 以执行脚本,或者我接下来应该在选择正确的应用程序设置时小心 name\variable?

您可以像这样将属性括在双引号内 -

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

您也可以使用单引号(''),因为在您的 属性 -

中没有要替换的变量
$hashtable.'AzureAd:ClientId' = "YYYYYY-1621-42ff-85cd-YYYYYYYY"