gpt4 book ai didi

azure - 无法在 PowerShell 7.3.x 中安装 `Az` 模块

转载 作者:行者123 更新时间:2023-12-02 06:06:16 25 4
gpt4 key购买 nike

我的 Windows 11 笔记本电脑安装了两个版本的 PowerShell:

  • 5.1.22621.963
  • 7.3.1(PowerShell 核心)

已关注 MS instructions ,我想在 PowerShell 7.3 中安装 Az 模块,所以我使用以下命令:

Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force

这给了我以下错误:

Install-Package: The following commands are already available on thissystem:'Login-AzAccount,Logout-AzAccount,Resolve-Error,Send-Feedback'. This module 'Az.Accounts' may override theexisting commands. If you still want to install this module 'Az.Accounts', use -AllowClobber parameter

此错误在 this SO post 中讨论。 。给出的解决方案是从 PowerShell 5.x 安装中删除所有预先存在的 Az 模块。这不适合我的情况,因为 (1) 我目前在任一版本的 PowerShell 中都没有安装任何 Az 模块,并且 (2) 我对修改 PowerShell 5.x 不感兴趣安装。请注意这些结果:

# From PowerShell 5.x
PS C:\Users\BArias> Get-InstalledModule -Name AzureRM -AllVersions -OutVariable AzVersions

Version Name Repository Description
------- ---- ---------- -----------
5.7.0 AzureRM https://www.power... Azure Resource Manager Module

然后...

# From PowerShell 7.3.x
PS C:\Users\BArias> Get-InstalledModule -Name AzureRM -AllVersions -OutVariable AzVersions
Get-Package: No match was found for the specified search criteria and module names 'AzureRM'.

对于 -Name Az,我得到了相同的“不匹配”结果。换句话说,我没有理由需要从 PowerShell 7.3.x 中删除 AzAzureRM,因为这些东西根本不存在。此外,我遵守 MS "coexistence" rules AzureRMAZ

这让我回到了最初的话题。当我的 PowerShell 7.3.x 未安装 AzureRM 时,为什么会出现此模块“Az.Accounts”可能会覆盖现有命令错误?

似乎将 Az 模块安装到 PowerShell 7.3.x 中是理所当然的事情,那么为什么它不能“正常工作”呢?我的印象是,尝试将 Az 模块安装到 PowerShell 7 中可能存在本质上的错误?例如,MS 是否只是希望我使用“Azure Cloud Shell”,而我不应该摆弄我的 PowerShell 7?

最佳答案

背景信息:

  • Get-InstalledModule 列出所有本地可用模块,它仅列出使用 Install-Module 安装的模块,在 PowerShell 的给定版本中。

  • 要查看所有本地可用的模块,请使用 Get-Module使用 -ListAvailable 开关(没有 -ListAvailable,仅列出当前加载的模块。

  • Get-InstalledModule 未涵盖的模块包括:

    • 随 PowerShell 一起提供的模块

    • 模块手动复制$env:PSModulePath 中列出的目录之一,PowerShell 使用的环境变量 module auto-loading .

    • PowerShell (Core)具体来说,是使用 Install-Module 安装的那些模块,但来自 Windows PowerShell,位于 AllUsers 范围内(-Scope AllUsers),假设 PowerShell (Core) 的 $env:PSModulePath 包含以下 Windows PowerShell 特定目录也是:

      • $env:ProgramFiles\WindowsPowerShell\Modules(用户安装的模块的 AllUsers 范围的目录)
      • $env:windir\System32\WindowsPowerShell\v1.0\Modules(Windows PowerShell 附带的模块)
<小时/>

因此,要确保确实没有安装 Az 相关模块,请运行以下命令:

Get-Module -ListAvailable Az* | Select-Object Name, Path

如果您发现任何内容,请使用 Uninstall-Module 卸载它们 - 可能是从 Windows PowerShell 中卸载它们(要卸载 AllUsers 范围内的模块,您需要使用提升来运行),然后再次尝试从 PowerShell(核心)进行安装。

如果您不想想要从Windows PowerShell安装中删除已安装的Azure模块,您可以尝试以下操作(未经测试):

  • 在 PowerShell(核心)中运行 Install-Module 之前,(暂时)从 $ 中删除 $env:ProgramFiles\WindowsPowerShell\Modules 条目env:PSModulePath,这样 Install-Module 就无法发现那里现有的 Az* 模块,您可以按如下方式执行此操作(这只修改 特定于进程的环境变量副本;下一个 session 将再次看到注册表定义的值):

    $env:PSModulePath = ($env:PSModulePath -split ';' -ne "$env:ProgramFiles\WindowsPowerShell\Modules") -join ';'
  • 安装到 PowerShell(核心)特定目录(无论是在 AllUsers 范围内还是 CurrentUser 范围内)后,该安装应优先于其中的版本$env:ProgramFiles\WindowsPowerShell\Modules,假设在 $env:PSModulePath< 中,特定于 PowerShell (Core) 的条目列在特定于 Windows PowerShell 的条目之前/.

另一个不太理想的选择是从 Windows PowerShell 的 AllUsers 范围中卸载该模块,然后在 CurrentUser 范围中重新安装 (潜在多个用户需要它)。鉴于 PowerShell(核心)只能看到使用 Install-Module 安装的 AllUsers 范围的模块,将它们移动到 CurrentUser 范围可以有效地隐藏它们PowerShell(核心)。

关于azure - 无法在 PowerShell 7.3.x 中安装 `Az` 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75164322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com