Azure DevOps - 在 powershell 中无法识别“Get-AzSubscription”

Posted

技术标签:

【中文标题】Azure DevOps - 在 powershell 中无法识别“Get-AzSubscription”【英文标题】:Azure DevOps - Cannot recognize "Get-AzSubscription" in powershell 【发布时间】:2022-01-06 22:48:45 【问题描述】:

我在 Azure DevOps 中定义了以下管道,以在 linux 代理中运行 Az 模块 powershell。

- main

#pool: Default

pool:
  vmImage: 'ubuntu-latest'

steps:

- task: AzureCLI@2
  inputs:
    azureSubscription: sp-test
    scriptType: pscore
    scriptLocation: 'inlineScript'
    inlineScript: |
      $Subscriptions = Get-AzSubscription
  displayName: 'Run Powershell'

它给了我一个错误

Get-AzSubscription : The term 'Get-AzSubscription' is not recognized as a name of a cmdlet, function, script file, or executable program.

同样的方法适用于运行 az 命令的 bash。我需要先在 linux 代理上安装任何 Powershell 模块吗?

【问题讨论】:

【参考方案1】:

如果要运行 azure powershell 命令Get-AzSubscription,只需使用Azure PowerShell Task,Linux 代理也支持。

如果你还想使用 Azure CLI Task,你可以直接使用az account show 命令,它和powershell 命令Get-AzSubscription 做同样的事情。

原因是不同的任务会自动为你登录到 azure,例如对于 azure powershell 任务,它将使用Connect-AzAccount 登录;对于 azure cli 任务,它将使用az login 登录。不建议将它们混合在一起。

【讨论】:

【参考方案2】:

Get-AzSubscription 是一个 PowerShell 命令,您使用 AzureCLI@2 任务,它用于 az 命令。

你只需要使用AzurePowerShell@5任务:

- task: AzurePowerShell@5
  displayName: 'Azure PowerShell script: InlineScript'
  inputs:
    azureSubscription: 'sp-test'
    ScriptType: InlineScript
    Inline: '$Subscriptions = Get-AzSubscription'
    azurePowerShellVersion: LatestVersion

【讨论】:

谢谢,但这里有两件事。 AzurePowerShell@5 可以在 Linux 代理上运行吗?对于我的 AzureCli@2 任务,我将其标记为 pscore 脚本类型。不能用来运行Powershell命令吗? 它当然应该能够运行powershell命令。但也许它不允许您从 azure powershell 模块运行命令? 没错。我可以按照我展示的方式运行普通的 powershell,但不能运行 Az powershell。不知道为什么

以上是关于Azure DevOps - 在 powershell 中无法识别“Get-AzSubscription”的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps 介绍

如何将 Azure DevOps Extension for Azure CLI 与 Azure DevOps Server 一起使用?

Yaml Azure Devops TerraformInstaller 不明确

Azure DevOps 资源存储库:self

Azure DevOps系列Azure DevOps构建.NET EFCore应用程序

1什么是Azure DevOps