繁体   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