使用 PowerShell 在 Azure 中使用服务主体 ID 登录时无法获取订阅详细信息

unable to get subscription details when logging in with service principal id in azure using PowerShell

我正在尝试使用 PowerShell 使用服务主体 ID 登录。通过这样做,我想连接到我的 Azure 数据工厂并停止触发器。但是在代码执行的初始阶段它给出了一个错误。我贴一段代码和结果。

$resourceGroupName = 'my-resource-group'
$dataFactoryName = 'my-azure-data-factory-name'
$applicationid = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx'
$secretKey = 'my-secret-key'
$tenantID = 'my-tenant-id'

$password = ConvertTo-SecureString -String $secretKey -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($applicationid,$password)
$x= Login-AzureRmAccount -ServicePrincipal -Credential $cred -Tenant $tenantID

#Gather a list of triggers to stop them
$allTriggers = Get-AzureRmDataFactoryV2Trigger -ResourceGroupName $resourceGroupName -DataFactoryName $dataFactoryName

结果:

好吧,我可以重现您的问题,这是由您的服务负责人造成的,他在您的数据中没有任何作用 factory/subscription。

要解决此问题,请导航至门户中的 ADF 或订阅 -> Access control (IAM) -> 添加您的服务主体作为角色,例如Data Factory Contributor/Contributor。要添加角色,您登录门户的用户帐户需要是您 ADF/subscription.

Owner 角色

添加角色后,运行命令再次登录,即可正常使用。 (我用新的Az模块测试,你的AzureRm模块也是一样的逻辑)