Я определил свой код следующим образом:
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
В переменной конвейера я добавил переменные и использовал их в своих шаблонах конвейера. Мой сценарий 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"
Это два символа «$», которые влияют на замену строки?
Может ли кто-нибудь помочь мне в том, как обновить это, потому что для чтения значения требуется первый символ «$»
Спасибо @jdweng, я узнал, что использую формат XML, который, в свою очередь, не заменяет аргументы сценария powershell. Теперь у меня есть токен замены в azure devops, который может решить эту проблему.
Спасибо @jdweng за предложение правильного решения пользователю, который решил проблему.
PS не будет подставлять переменную внутри одинарной кавычки (только двойная кавычка). Используйте две двойные кавычки, чтобы избежать одинарной кавычки: ScriptArguments: "$apim_service_name $apprid $rg_name $tid -url $url"
Мы можем заключить строку как в одинарную кавычку, так и в двойную кавычку, но чтобы заменить значение в переменной, которая начинается со знака доллара ($), перед отправкой для обработки команды, вы должны использовать только двойные кавычки, как указано в этом MS Doc правил цитирования PowerShell.
PS не будет подставлять переменную внутри одинарной кавычки (только двойная кавычка). Используйте две двойные кавычки, чтобы избежать одинарной кавычки: ScriptArguments: "$apim_service_name $apprid $rg_name $tid -url $url"