簡體   English   中英

Azure Devops:值不能為空,參數令牌

[英]Azure Devops: value cannot be null, parameter token

我在Azure DevOps中運行Azure Powershell任務。 在腳本中,我使用以下命令

Get-AzureRmADUser -UserPrincipalName $adusernameNewPermission

但是我的發布管道失敗,並顯示以下錯誤代碼

 ##[error]Value cannot be null.
Parameter name: token

首先,我認為該命令沒有正確的上下文或足夠的權限,因此我添加了默認配置文件。

Get-AzureRmADUser -DefaultProfile (Get-AzureRmContext) -UserPrincipalName $adusernameNewPermission

如果我打印該命令的輸出,則GetAzureRmContext確實轉到了正確的上下文。

該命令本身在本地運行時(使用我自己的用戶帳戶)沒有任何問題,因此,我認為其標題的唯一原因是服務連接無權執行該操作。 但是,我的用戶帳戶對租戶的權限最少,而天藍色devops中的服務連接具有更多的權限。

問題的根源讓我發瘋。 這是什么意思? 沒有合理的錯誤消息:(有人遇到相同的問題,還是知道我缺少什么?

PS:$ adusernameNewPermission變量的工作方式就像我說的一樣,完全相同的代碼可以在本地計算機上完美運行,唯一的區別是登錄的用戶。

您是否嘗試過使用Get-azureaduser? 這是一條命令,需要針對Azure AD對功能進行身份驗證。

$azurePassword = ConvertTo-SecureString $env:client_secret -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($env:clientid , $azurePassword)
Connect-AzAccount -Credential $psCred -TenantId $env:tenantid -ServicePrincipal

如果您正在使用“腳本文件路徑”的腳本類型,請檢查您是否沒有嘗試傳遞任何參數(例如-token)。

我會嘗試2件事來恢復基礎。 這將讓您知道它是否實際上是AzDO服務主體,以及在管道中使用的對象類型。

  1. 以最簡單的形式測試命令的功能,並以帳戶作為字符串運行它:
Get-AzureRmADUser -UserPrincipalName "achahbar@stankoverflow.com"

#OR

$UPN = "achahbar@stankoverflow.com"
Get-AzureRmADUser -UserPrincipalName $UPN

假設這可行並且根據變量包含的內容,您只需要將UPN / Email對象傳遞到命令中:

Get-AzureRmADUser -UserPrincipalName $adusernameNewPermission.UPN
  1. 如果這不起作用,請將您的任務更新為版本4(預覽),然后將命令更新為Get-AzADUser並再次測試步驟1.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM