无法使用脚本参数替换Azure PowerShell中的变量值以更新APIM策略

mdfafbf1  于 2023-03-02  发布在  Shell
关注(0)|答案(1)|浏览(152)

我的代码定义如下:

param ($apim_service_name, $apprid, $rg_name, $tid, $url)

<set-url>@($"$url/{(string)context.Variables["insured-id"]}")</set-url>
$apimContext = New-AzApiManagementContext -ResourceGroupName $rg_name -ServiceName $apim_service_name
Set-AzApiManagementPolicy -Context $apimContext -Format "application/vnd.ms-azure-apim.policy.raw+xml" -ApiId "echo-api" -OperationId "retrieve-resource" -Policy $PolicyStringRead

在pipeline变量中,我添加了变量,并在我的pipeline模板中使用我的PowerShell脚本如下所示:

steps:
  - task: AzurePowerShell@5
    displayName: 'Azure PowerShell script: FilePath'
      inputs:
         azureSubscription: 'sub-test'
         ScriptPath: 'test-policy.ps1'
         ScriptArguments: '"$(apim_service_name)" "$(apprid)" "$(rg_name)" "$(tid)" -url $(url)'
         azurePowerShellVersion: LatestVersion

在管道的变量部分定义变量
除“url”之外的所有内容都将被替换
是两个“$”符号影响了替换字符串吗?
有人能帮我更新一下吗?因为它需要第一个“$”符号才能读取值

m2xkgtsf

m2xkgtsf1#

感谢@jdweng向用户建议正确的解决方案,解决了问题。
PS不会替换单引号内的变量(仅双引号)。请使用两个双引号对单引号进行转义:脚本参数:“$apim服务名称$apprid $rg名称$tid -url $url”
我们可以用单引号或双引号将字符串括起来,但要在发送命令处理之前替换以美元符号($)开头的变量中的值,您必须只使用双引号,如PowerShell引用规则的MS Doc中所示。

相关问题