【问题标题】:Azure DevOps Azure PowerShell task output variableAzure DevOps Azure PowerShell 任务输出变量
【发布时间】:2019-07-14 17:41:56
【问题描述】:

我正在使用一个 Azure PowerShell 任务和 PowerShell 任务创建发布管道。在 Azure Powershell 任务中,我有以下代码

$groupInfos = @()
for ([int]$i = 0; $i -lt $azureADGroupsObj.Count)
{
    $groupInfo = New-Object PSObject
    $groupInfo | Add-Member -MemberType NoteProperty -Name "displayName" -Value $azureADGroupsObj[$i].DisplayName
    $groupInfo | Add-Member -MemberType NoteProperty -Name "Id" -Value 
    $azureADGroupsObj[$i].Id
    $groupInfos += $groupInfo
    $i++
}
return $groupInfos
Write-Host "##vso[task.setvariable variable=azureADGroups;]$groupInfos"

我正在尝试将 $groupInfos 存储到此处的 azureADGroups 变量中。

但是当我在同一作业的下一步中运行 PowerShell 任务时,它说“azureADGroup”一词无法识别.. 似乎没有设置变量.. 有人知道我在这里缺少什么吗?

【问题讨论】:

  • 添加一个答案,它对我有用,请检查一下。
  • 我觉得你需要把它改成Write-Host $env:azureADGroups
  • 我更新了我的答案,以便在下一个 PS 任务中使用它。

标签: azure-devops azure-powershell


【解决方案1】:

我在您的脚本中发现了 3 个问题:

  1. 您不需要设置参考名称。

  2. 在写变量命令之前有一个返回。因此,不会执行写变量命令。

  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 任务,请将变量用单引号括起来。这样,它将被视为一个字符串。

【讨论】:

  • 嗨,杰克,感谢您迄今为止的帮助。如果我想将 azureADGroupsFromString 传递给下一个 PS 任务,我应该作为字符串还是 json 对象类型传递?我遇到了一个错误
  • @wonderfulworldwithcharity 您需要将其作为字符串传递。因为环境变量只能是单行字符串。
  • @wonderfulworldwithcharity 并且使用字符串很容易,只要使用ConvertFrom-Json,你就会得到一个PSObject。
  • 当我使用内联脚本时它工作正常,但我实际上将它传递给脚本,似乎它没有将它作为字符串或其他东西,我上传了更多截图
  • @wonderfulworldwithcharity 用单引号 (') 将变量括起来,这可能会有所帮助。
猜你喜欢
  • 2020-10-07
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
  • 2021-07-14
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
  • 1970-01-01
相关资源
最近更新 更多