安装 Azure CLI 并在同一脚本中运行 az login 命令,而无需重新启动 Power Shell

问题描述

我正在研究一种使用 azure CLI (az storage blob upload)文件上传到 Azure blob 的自动化流程,并且它按预期工作正常。

  • Azure CLI 版本:2.17.1
  • PoweShell 版本:Psversion 5.1.19041.610

用户第一次运行 powershell 脚本时,如果用户机器上没有安装 azure CLI。我们正在安装(找到下面的代码)。但是这里的要求是在我们从 PowerShell 安装 azure CLI 之后,当我们执行“az login”时,我们得到以下错误

az : The term 'az' is not recognized as the name of a cmdlet,function,script file,or operable program. Check the spelling of the name,or if a path was included,verify that the path is 
correct and try again.
At C:\Users\v-moush\Desktop\PowerShellerrorScript.ps1:13 char:1
+ az login
+ ~~
    + CategoryInfo          : ObjectNotFound: (az:String) [],CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
Function Set-AzModule(){
    $isAzureCliInstalled = Azure-CLI-Installed
    if (!$isAzureCliInstalled) {
        Write-Log “Trying to install Microsoft Azure CLI”
        Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; start-process msiexec.exe -Wait -ArgumentList ‘/I AzureCLI.msi /quiet’; rm .\AzureCLI.msi
        $isAzureCliInstalled = Azure-CLI-Installed;
    
        if (!$isAzureCliInstalled) {
            Write-Log -message “Unable to install Microsoft Azure CLI”
        }
        else {
            Write-Log -message “Microsoft Azure CLI installed successfully”
            az login
            ## Here the command is failing power shell not able to find the az module
        }
    }
}

Function Azure-CLI-Installed()
{
    # Check Microsoft Azure CLI is installed or not.
    return (Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
    Where { $_.displayName -eq “Microsoft Azure CLI” }) -ne $null
}

查询:如何在同一个脚本中安装Azure CLI后执行az login等az命令而不重启Powershell脚本?

注意:我不能使用 azcopy 模块。

解决方法

恐怕you may have to restart your shell in order for changes to take effect

无论我读过什么官方文件,都描述了you will need to reopen PowerShell to use the Azure CLI.

每次运行脚本时都应该安装 Azure CLI,这有点连贯。我的建议是安装一次,然后重启你的 power shell 来运行你的脚本。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...