Я обнаружил в вашем скрипте 3 проблемы:
Вам не нужно указывать имя ссылки.
Перед командой записи переменной есть возврат.Таким образом, команда записи переменной не будет выполнена.
Команда записи переменной может использовать только однострочную строку.Тем не менее, $ groupInfos является объектом.Он не будет неявно преобразован в строку.Вам нужно использовать команду "ConvertTo-Json -Compress", чтобы преобразовать ее в строку.
Я тестировал на своем конвейере:
$groupInfosString = $groupInfos | ConvertTo-Json -Compress
write-host $groupInfos
write-host $groupInfosString
Write-Host "##vso[task.setvariable variable=azureADGroups;]$groupInfos"
Write-Host "##vso[task.setvariable variable=azureADGroupsFromString;]$groupInfosString "
Из журнала отладки, мы можем проверить, что переменная "azureADGroupsFromString" успешно установлена.
Обновление:
Вы можете использовать следующий скрипт в следующей задаче PS:
$objs = '$(azureADGroupsFromString)' | ConvertFrom-Json
foreach( $obj in $objs){
Write-Host ("displayName:{0} Id:{1}" -f $obj.displayName, $obj.Id)
}
Вывод:
Обновление:
Если вы хотите передать его следующей задаче PS через аргументы, пожалуйста,заключите переменную в одинарные кавычки.Таким образом, он будет рассматриваться как строка.