【问题标题】:How to run Powershell script on multiple Subscriptions Using Az PowerShell Command如何使用 Az PowerShell 命令在多个订阅上运行 Powershell 脚本
【发布时间】:2022-08-04 14:51:45
【问题描述】:

我有多个 azure 租户,每个租户都有多个订阅,我必须为我的所有订阅运行一个 PowerShell 脚本。

这可以使用Azure CLI 来实现,而且效果很好。

我使用Azure CLI 如下;

$az_account = (az account list --query \"[].[name]\" -o tsv)
foreach ($account in $az_account) {
    az account set --name $account
    #<RUN SCRIPTS HERE>#
}

但在某些情况下,我必须使用Az PowerShell 命令而不是Azure CLI

所以任何人都可以帮助我

  1. 如何为多个订阅运行Az PowerShell 命令
  2. Az PowerShell配置文件路径(与Azure CLI相同,即C:\\Users\\%USER\\.Azure\\azureProfile.json)。

    标签: azure powershell


    【解决方案1】:
    1. 如何为多个订阅运行Az PowerShell 命令

      您可以使用以下 PowerShell 脚本来运行多个订阅 PowerShell 命令。

      # Get the Subscription Details using Get-AzSubscription Command
      Get-AzSubscription | ForEach-Object {
          # Set the context Details using Set-AzContext Command which is equalent to the az account set CLI Command
          $_ | Set-AzContext
          $subscriptionName = $_.Name
            #<RUN YOUR SCRIPTS HERE>#
      
      }
      

      1. Az PowerShell配置文件路径(与Azure CLI相同,即C:\Users\%USER\.Azure\azureProfile.json)。

      有关配置文件路径位置,请参阅 here

    【讨论】:

    • 谢谢@DelliganeshS-MT,你也可以支持我如何添加多个租户订阅,我不能超过 2 使用 Connect-AzAccount -TenantId 'xxxx-xxx-xx-xxx'
    • 同样的方式你可以获取租户 ID。但是您只需一个订阅即可连接到 azure。
    【解决方案2】:

    解析度

    经过几次尝试,终于找到了一些方法来解决我的问题。在此处发布相同内容可能对某人有所帮助。

    您可以使用以下命令连接所有订阅

    Connect-AzAccount -Tenant "xxxx-xxxxx-xxxx-xxx" -Subscription "xxxx-xxxxx-xxxx-xxx"
    

    列出所有连接的订阅

    Get-AzContext -ListAvailable | Select-Object Name, Subscription, Tenant
    

    如果要重命名为友好名称,

    Rename-AzContext -SourceName "Azure subscription 1 (xxxxx-xxxx-xxxx-xxxx-xxxx) - xxxxx-xxxx-xxx-xxxx-xxxx-xxx - jawad@xyz.com" -TargetName "MySubscription"
    

    要将这些配置文件保存到文件中,

    Save-AzContext -Path "C:\Users\jawad\Downloads\AzpwshProfile.json"
    

    您可以随时使用以下命令导入这些配置文件,(先测试清除配置文件Clear-AzContext -Force

    Import-AzContext -Path "C:\Users\jawad\Downloads\AzpwshProfile.json"
    

    现在您可以轻松地使用for 循环来设置订阅,例如

    $acc = (Get-AzContext -ListAvailable | Select-Object Name)
    foreach ($account in $acc) {
    >> Select-AzContext $account
    >> Get-AzVM | Export-Csv -Path "inventory.csv"
    >> }
    

    谢谢

    【讨论】:

      猜你喜欢
      • 2020-08-11
      • 2019-12-07
      • 1970-01-01
      • 2019-08-15
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      相关资源
      最近更新 更多