Freigeben über


Deinstallieren des Azure PowerShell-Moduls

In diesem Artikel erfahren Sie, wie Sie eine ältere Version von Azure PowerShell deinstallieren oder vollständig aus Ihrem System entfernen. Wenn Sie sich entschieden haben, Azure PowerShell vollständig zu deinstallieren, geben Sie uns feedback über das Send-Feedback-Cmdlet . Wenn ein Fehler aufgetreten ist, würden wir es schätzen, wenn Sie ein GitHub-Problem ablegen , damit es behoben werden kann.

Deinstallieren des Az PowerShell-Moduls über MSI

Wenn Sie das Az PowerShell-Modul mit dem MSI-Paket installiert haben, müssen Sie es über das Windows-System statt über PowerShell deinstallieren.

Plattform Anweisungen
Windows 10 Starten Sie > Einstellungen > Apps
Windows 7
Windows 8
Start > Systemsteuerung > Programme > Programm deinstallieren

Sobald Sie sich auf diesem Bildschirm befinden, sollte Azure PowerShell im Programmeintrag angezeigt werden. Dies ist die zu deinstallierende App. Wenn dieses Programm nicht aufgeführt ist, installieren Sie es über PowerShellGet und sollten den nächsten Anweisungen folgen.

Deinstallieren des Az PowerShell-Moduls von PowerShellGet

Um die Az-Module zu deinstallieren, können Sie das Cmdlet Uninstall-Module verwenden. Uninstall-Module Es wird jedoch nur ein Modul deinstalliert. Um das Az PowerShell-Modul vollständig zu entfernen, müssen Sie jedes Modul einzeln deinstallieren. Die Deinstallation kann kompliziert sein, wenn Sie mehr als eine Version von Azure PowerShell installiert haben.

Führen Sie den folgenden Befehl aus, um zu überprüfen, welche Versionen des Az PowerShell-Moduls Sie installiert haben:

Get-InstalledModule -Name Az -AllVersions
Version             Name                           Repository           Description
-------             ----                           ----------           -----------
3.8.0               Az                             PSGallery            Microsoft Azure PowerShell
4.1.0               Az                             PSGallery            Microsoft Azure PowerShell

Das folgende Skript fragt den PowerShell-Katalog ab, um eine Liste der abhängigen Untermodule abzurufen. Anschließend deinstalliert das Skript die richtige Version der einzelnen Untermodule. Sie benötigen Administratorzugriff, um dieses Skript in einem anderen Bereich als "Prozess " oder " Aktueller Benutzer" auszuführen.

function Uninstall-AzModule {
  [CmdletBinding(SupportsShouldProcess)]
  param(
    [ValidateNotNullOrEmpty()]
    [ValidateSet('Az','AzureRM','Azure')]
    [string]$Name = 'Az',

    [Parameter(Mandatory)]
    [string]$Version,

    [switch]$AllowPrerelease
  )

  $Params = @{}

  if ($PSBoundParameters.AllowPrerelease) {
    $Params.AllowPrerelease = $true
  }

  $IsAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')

  if (-not(Get-InstalledModule -Name $Name -RequiredVersion $Version -ErrorAction SilentlyContinue -OutVariable RootModule @Params)) {

    Write-Warning -Message "Uninstall aborted. $Name version $Version not found."

  } elseif (($RootModule.InstalledLocation -notlike "*$env:USERPROFILE*") -and ($IsAdmin -eq $false)) {

    Write-Warning -Message "Uninstall aborted. $Name version $Version exists in a system path. PowerShell must be run elevated as an admin to remove it."

  } elseif ((Get-Process -Name powershell, pwsh -OutVariable Sessions -ErrorAction SilentlyContinue).Count -gt 1) {

    Write-Warning -Message "Uninstall aborted. Please close all other PowerShell sessions before continuing. There are currently $($Sessions.Count) PowerShell sessions running."

  } else {
    Write-Verbose -Message 'Creating list of dependencies...'
    $target = Find-Module -Name $Name -RequiredVersion $Version @Params

    $AllModules = @([pscustomobject]@{
      Name = $Name
      Version = $Version
    })

    $AllModules += foreach ($dependency in $target.Dependencies) {
      switch ($dependency.keys) {
        {$_ -contains 'RequiredVersion'} {$UninstallVersion = $dependency.RequiredVersion; break}
        {$_ -contains 'MinimumVersion'} {$UninstallVersion = $dependency.MinimumVersion; break}
      }

      [pscustomobject]@{
        Name = $dependency.Name
        Version = $UninstallVersion
      }
    }

    [int]$i = 100 / $AllModules.Count

    foreach ($module in $AllModules) {
      Write-Progress -Activity 'Uninstallation in Progress' -Status "$i% Complete:" -PercentComplete $i
      $i++

      if (Get-InstalledModule -Name $module.Name -RequiredVersion $module.Version -ErrorAction SilentlyContinue @Params) {
        Write-Verbose -Message "Uninstalling $($module.Name) version $($module.Version)"

        Remove-Module -FullyQualifiedName @{ModuleName=$module.Name;ModuleVersion=$module.Version} -ErrorAction SilentlyContinue

        try {
          if ($PSCmdlet.ShouldProcess("$($module.Name) version $($module.Version)")) {
            Uninstall-Module -Name $module.Name -RequiredVersion $module.Version -Force -ErrorAction Stop @Params
          }
          $State = 'Uninstalled'
        } Catch {
          $State = 'Manual uninstall required'
          Write-Verbose -Message "$($module.Name) version: $($module.Version) may require manual uninstallation."
        }

      } else {
        $State = 'Not found'
        Write-Verbose -Message "$($module.Name) version: $($module.Version) not found."
      }

      if (-not $PSBoundParameters.WhatIf) {
        [pscustomobject]@{
          ModuleName = $module.Name
          Version = $module.Version
          State = $State
        }
      }

    }
  }
}

Um diese Funktion zu verwenden, kopieren Sie den Code, und fügen Sie ihn in Ihre PowerShell-Sitzung ein. Das folgende Beispiel zeigt, wie Sie die Funktion ausführen, um eine ältere Version des Az PowerShell-Moduls und deren Untermodule zu entfernen.

Uninstall-AzModule -Name Az -Version 1.8.0

Wenn das Skript ausgeführt wird, wird der Name, die Version und der Status der einzelnen Untermodule angezeigt, die deinstalliert werden. Wenn Sie das Skript ausführen möchten, um nur zu sehen, was gelöscht würde, ohne es zu entfernen, geben Sie den -WhatIf Parameter an.

ModuleName              Version  State
----------              -------  -----
Az.Accounts             1.5.1    Not found
Az.Aks                  1.0.1    Uninstalled
Az.AnalysisServices     1.1.0    Uninstalled
Az.ApiManagement        1.0.0    Uninstalled
Az.ApplicationInsights  1.0.0    Uninstalled
...

Von Bedeutung

Wenn dieses Skript nicht mit einer genauen Abhängigkeit mit derselben zu deinstallierenden Version übereinstimmen kann, wird keine Version dieser Abhängigkeit deinstalliert. Dies liegt daran, dass es möglicherweise andere Versionen des Zielmoduls auf Ihrem System gibt, die auf diesen Abhängigkeiten basieren.

Führen Sie das folgende Beispiel für jede Version des Az PowerShell-Moduls aus, das Sie deinstallieren möchten. Aus Gründen der Einfachheit deinstalliert das folgende Skript alle Versionen von Az mit Ausnahme der neuesten.

$Modules = Get-InstalledModule -Name Az -AllVersions |
    Sort-Object -Property Version -Descending |
        Select-Object -Skip 1
$Modules | ForEach-Object {Uninstall-AzModule -Name $_.Name -Version $_.Version}

Deinstallieren des AzureRM-Moduls

Wenn Sie das Az-Modul auf Ihrem System installiert haben und AzureRM deinstallieren möchten, gibt es zwei Optionen. Welche Methode Sie befolgen, hängt davon ab, wie Sie das AzureRM-Modul installiert haben. Wenn Sie nicht sicher sind, ob Sie die ursprüngliche Installationsmethode verwenden, führen Sie die Schritte zum deinstallieren eines MSI zuerst aus.

Deinstallieren des AzureRM PowerShell-Moduls über MSI

Wenn Sie das AzureRM PowerShell-Modul mithilfe des MSI-Pakets installiert haben, müssen Sie es über das Windows-System und nicht über PowerShell deinstallieren.

Plattform Anweisungen
Windows 10 Starten Sie > Einstellungen > Apps
Windows 7
Windows 8
Start > Systemsteuerung > Programme > Programm deinstallieren

Sobald Sie sich auf diesem Bildschirm befinden, sollte Azure PowerShell oder Microsoft Azure PowerShell – Monat Jahr in der Programmauflistung angezeigt werden. Dies ist die zu deinstallierende App. Wenn dieses Programm nicht aufgeführt ist, installieren Sie es über PowerShellGet und sollten den nächsten Anweisungen folgen.

Deinstallieren des AzureRM PowerShell-Moduls von PowerShellGet

Wenn Sie AzureRM mit PowerShellGet installiert haben, können Sie die Module mit dem Cmdlet Uninstall-AzureRM entfernen, das als Teil des Az.Accounts Moduls verfügbar ist. Im folgenden Beispiel werden alle AzureRM-Module von Ihrem Computer entfernt. Sie erfordert Administratorrechte.

Uninstall-AzureRm