问题描述
我正在研究一种使用 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 来运行你的脚本。