You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Get-AzureStorageKey获取Azure存储密钥失败:订阅问题求助

解决服务主体登录PowerShell后订阅相关错误问题

我来帮你一步步排查这个问题,你遇到的情况是服务主体登录后,PowerShell没识别到可用的经典订阅,导致设置默认订阅失败,进而无法获取经典存储账户的密钥。咱们按下面的步骤来解决:

第一步:确认当前PowerShell上下文并列出订阅

首先要明确你用的是Azure服务管理(ASM)模块还是Azure资源管理(ARM)模块,因为Get-AzureStorageKey是ASM模块的命令,对应的订阅操作也需要在ASM上下文里执行:

  1. 先导入ASM模块并切换到对应的模式:
    Import-Module Azure
    Switch-AzureMode -Name AzureServiceManagement
    
  2. 列出当前服务主体能访问的所有经典订阅:
    Get-AzureSubscription
    
    • 如果这个命令返回空列表,说明服务主体没有经典订阅的访问权限,直接跳到第三步处理权限问题。
    • 如果返回了你的目标订阅,那继续第二步设置默认订阅。

第二步:指定具体订阅设置为默认

不要直接用Select-AzureSubscription -Default,因为PowerShell不知道你要选哪个订阅,得明确指定订阅名称或ID:

  1. 从Get-AzureSubscription的输出里找到你的目标订阅名称或ID。
  2. 执行下面的命令设置默认(替换成你的实际信息):
    # 用订阅名称
    Select-AzureSubscription -Default -SubscriptionName "你的订阅名称"
    # 或者用订阅ID
    Select-AzureSubscription -Default -SubscriptionId "你的订阅ID"
    
  3. 设置完成后,再尝试执行Get-AzureStorageKey -StorageAccountName myclassicStorageAccount,应该就能正常获取密钥了。

第三步:给服务主体添加经典订阅的访问权限

如果Get-AzureSubscription返回空,说明你的服务主体只有ARM订阅的所有者权限,但没有经典订阅的访问权限(经典资源和ARM资源的权限是分开管理的)。你可以通过以下方式授权:

方式1:Azure门户操作

  1. 登录Azure门户,搜索并进入「订阅」页面。
  2. 找到目标订阅,点击「访问控制(IAM)」。
  3. 点击「添加」→「添加角色分配」,选择「经典订阅参与者」角色(这个角色允许管理经典资源)。
  4. 在成员里搜索你的服务主体名称,选中后完成添加。

方式2:PowerShell命令授权

  1. 先获取服务主体的对象ID:
    $sp = Get-AzureRmADServicePrincipal -ServicePrincipalName "你的服务主体应用ID"
    
  2. 给服务主体添加经典订阅参与者权限:
    New-AzureRoleAssignment -ObjectId $sp.Id -RoleDefinitionName "Classic Subscription Participant" -Scope "/subscriptions/你的订阅ID"
    
  3. 授权完成后,重新登录PowerShell,再执行第一步的命令列出订阅,应该就能看到目标订阅了。

完成以上步骤后,你再尝试获取存储账户密钥,应该就能解决这个问题啦。

内容的提问来源于stack exchange,提问作者lidong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:12:23