如何将空的哈希文字处理到DevOps Pipeline变量中

发布于 2025-01-23 21:56:43 字数 1294 浏览 0 评论 0原文

我有一个DevOps释放管道。当我更新我的应用服务时,它会自动删除用户之前添加的任何应用程序配置。 因此,我想获取所有应用程序设置并将它们存储到变量中,然后在应用程序Service更新再次将它们添加回应用程序设置之后。

将应用程序设置存储到变量

$webApp = Get-AzureRMWebApp -ResourceGroupName $(Parameter.ResourceGroupName) -Name $(Parameters.AppName)  
$appSetting = $webApp.SiteConfig.AppSettings
$hash = @{}
foreach($kvp in $appSetting) {
    $hash[$kvp.Name] = $kvp.Value
}
Write-Host ($hash | Out-String)
$jsonObject = [PSCustomObject]$hash
$convertJson = $jsonObject | ConvertTo-JSON -Depth 100 -Compress
Write-Host "##vso[task.setvariable variable=storeAppSetting;]$convertJson"

注意:当我打印$哈希时,它成功打印了所有键值对。

现在,我想使用该变量再次设置应用程序设置

$hashtable = @{}
$hashtable = $(storeAppSetting) | ConvertFrom-JSON -Depth 100 -AsHashtable
Write-Host ($hashtable | Out-String)
Set-AzureRMWebApp -ResourceGroupName $(Parameter.ResourceGroupName) -Name $(Parameters.AppName) -AppSettings $hashtable

都是发行管道中的Azure PowerShell步骤。在第一步中没有遇到错误,并成功将凸电表存储到了变量中。在第二步中,显示错误是因为关键值之一为空。

+ ... 1000ae7f7; EnterpriseRedisAccess=true; RedisConnectionString=; d=d; S ...
+                                                                  ~
Missing statement after '=' in hash literal.

有什么建议我该如何处理?

I have one DevOps release pipeline. When I update my app service it automatically deletes any app configuration added previously by the user.
So I want to get all the app settings and store them into variable then after the app service update again add them back to the app setting.

To store app setting into variable

$webApp = Get-AzureRMWebApp -ResourceGroupName $(Parameter.ResourceGroupName) -Name $(Parameters.AppName)  
$appSetting = $webApp.SiteConfig.AppSettings
$hash = @{}
foreach($kvp in $appSetting) {
    $hash[$kvp.Name] = $kvp.Value
}
Write-Host ($hash | Out-String)
$jsonObject = [PSCustomObject]$hash
$convertJson = $jsonObject | ConvertTo-JSON -Depth 100 -Compress
Write-Host "##vso[task.setvariable variable=storeAppSetting;]$convertJson"

Note: When I print $hash, it successfully prints all the key-value pairs.

Now I want to use that variable to set the app setting again

$hashtable = @{}
$hashtable = $(storeAppSetting) | ConvertFrom-JSON -Depth 100 -AsHashtable
Write-Host ($hashtable | Out-String)
Set-AzureRMWebApp -ResourceGroupName $(Parameter.ResourceGroupName) -Name $(Parameters.AppName) -AppSettings $hashtable

Both are azure PowerShell steps in the release pipeline. No error was faced in the first step and successfully stored the hashtable into the variable. In the second step, the error is displayed because one of the key value is empty.

+ ... 1000ae7f7; EnterpriseRedisAccess=true; RedisConnectionString=; d=d; S ...
+                                                                  ~
Missing statement after '=' in hash literal.

Any suggestion how can I handle this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文