如何在 Azure DevOps PowerShell 中写入 "System.Collections.Hashtable" 变量
How to write "System.Collections.Hashtable" variable in Azure DevOps PowerShell
我有一个类型为 System.Collections.Hashtable
的变量,我想在 Powershell 脚本的 azure DevOps 变量中写入这个值,并且需要在以下任务中使用该变量。
在 azure DevOps 中创建的变量:header
任务 1
Connect-PowerBIServiceAccount -ServicePrincipal -Credential $credential -TenantId $env:tenant_id
$head = $null
$head = @{}
$head = Get-PowerBIAccessToken
Write-Host ("##vso[task.setvariable variable=headers]$head")
任务 2
Write-Host "Header is " $env:headers
Invoke-RestMethod -Headers $env:headers -Uri 'https://api.powerbi.com/v1.0/myorg/groups'
但是任务 2 中的问题是
Header is System.Collections.Hashtable
Invoke-RestMethod : Cannot
bind parameter 'Headers'. Cannot convert the
"System.Collections.Hashtable" value of type "System.String" to type
"System.Collections.IDictionary".
因为 header 的值只是分配 System.Collections.Hashtable
的字符串而不是实际值
如果在同一任务中调用 Invoke-RestMethod,则可以避免将令牌写入 Azure DevOps 变量的复杂性。
Connect-PowerBIServiceAccount -ServicePrincipal -Credential $credential -TenantId $env:tenant_id
$head = $null
$head = @{}
$head = Get-PowerBIAccessToken
Invoke-RestMethod -Headers $head -Uri 'https://api.powerbi.com/v1.0/myorg/groups'
我有一个类型为 System.Collections.Hashtable
的变量,我想在 Powershell 脚本的 azure DevOps 变量中写入这个值,并且需要在以下任务中使用该变量。
在 azure DevOps 中创建的变量:header
任务 1
Connect-PowerBIServiceAccount -ServicePrincipal -Credential $credential -TenantId $env:tenant_id
$head = $null
$head = @{}
$head = Get-PowerBIAccessToken
Write-Host ("##vso[task.setvariable variable=headers]$head")
任务 2
Write-Host "Header is " $env:headers
Invoke-RestMethod -Headers $env:headers -Uri 'https://api.powerbi.com/v1.0/myorg/groups'
但是任务 2 中的问题是
Header is System.Collections.Hashtable
Invoke-RestMethod : Cannot bind parameter 'Headers'. Cannot convert the "System.Collections.Hashtable" value of type "System.String" to type "System.Collections.IDictionary".
因为 header 的值只是分配 System.Collections.Hashtable
的字符串而不是实际值
如果在同一任务中调用 Invoke-RestMethod,则可以避免将令牌写入 Azure DevOps 变量的复杂性。
Connect-PowerBIServiceAccount -ServicePrincipal -Credential $credential -TenantId $env:tenant_id
$head = $null
$head = @{}
$head = Get-PowerBIAccessToken
Invoke-RestMethod -Headers $head -Uri 'https://api.powerbi.com/v1.0/myorg/groups'