如何更新 Azure PowerShell?

How to update Azure PowerShell?

我通过库安装了 Azure PowerShell 1.0.3(根据从库安装 Azure PowerShell 部分中的说明 here)。我想更新到最新版本,但不清楚我需要 运行 的命令。我尝试了以下方法,但决定询问而不是潜在地破坏我的安装:

PS C:\Windows\system32> Install-Module AzureRM

You are installing the module(s) from an untrusted repository. If you trust this repository, change its
InstallationPolicy value by running the Set-PSRepository cmdlet.
Are you sure you want to install software from 'https://www.powershellgallery.com/api/v2/'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): y
WARNING: Version '1.0.3' of module 'AzureRM' is already installed at 'C:\Program
Files\WindowsPowerShell\Modules\AzureRM.0.3'. To delete version '1.0.3' and install version '1.1.0', run
Install-Module, and add the -Force parameter.

有人可以提供更新 Azure PowerShell 的脚本吗?

您需要 运行 的命令在您发布的帮助文本中。使用 Install-Module -Force AzureRMSee the -Force tag.

更新引导程序后,运行 Install-AzureRM 安装新包。

编辑更新 (WMF > 4) PowerShell:

PowerShell 有一个 Update-Module AzureRM 函数,它将执行与 Install-Module -Force AzureRM 类似的 activity。如果您已经在本地环境中定义了 AzureRM 会覆盖的函数,您可能还想在 Install-Module 上使用 -AllowClobber 参数。

但是,它们都不会更新您当前的环境,因此在 运行 宁 Install-AzureRM 之前,请检查您是否已加载最新的 AzureRM 模块。例如,如果您想从 1.0.1 更新到 1.0.3:

$ Get-Module AzureRM

ModuleType Version    Name         ExportedCommands
---------- -------    ----         ----------------
Script     1.0.1      AzureRM      {...}

$ Update-Module AzureRM

$ # This will still be old because we haven't imported the newer version.
$ (Get-Module AzureRM).Version.ToString() 
1.0.1

$ Remove-Module AzureRM
$ Import-Module AzureRM
$ (Get-Module AzureRM).Version.ToString() 
1.0.3

$ Install-AzureRM

或者您可以在 运行更新后打开一个新的 PowerShell window。

命令似乎有点变化,我不得不使用 Install-Module -Force AzureRM -AllowClobber 来更新

最简单的方法是从 official link 中查找突出显示的内容。 link 将为您提供最新版本的 AzurePowershell

的 MSI

最可靠的方法似乎是:

下载最新的 MSI 并 运行 它。 https://github.com/Azure/azure-powershell/releases

我知道您要求的是脚本版本...我没有找到令人满意的各种脚本答案。 (我不想并行安装;Install-AzureRM 未找到;等等)。

我使用:

$azureRMs = Get-Module
foreach($azureRM in $azureRMs)
    {
    if($azureRM.name -like "AzureRM*" )
        {
        write-host "removing" $azureRM
        remove-Module -Name $azureRM
        Uninstall-Module -Name $azureRM
        }
    }
Install-Module azureRM