Desinstalación del módulo de Azure PowerShell

Advertencia

El módulo AzureRM PowerShell ha quedado oficialmente obsoleto a partir del 29 de febrero de 2024. Se recomienda a los usuarios migrar de AzureRM al módulo Az PowerShell para seguir recibiendo soporte técnico y actualizaciones.

Aunque el módulo AzureRM puede seguir funcionando, ya no recibirá mantenimiento ni soporte técnico, lo que significa que su uso continuado queda a discreción y riesgo del usuario. Consulte nuestros recursos de migración para ver una guía sobre la transición al módulo Az.

En este artículo se explica cómo desinstalar una versión anterior de Azure PowerShell o cómo quitarlo completamente el sistema. Si ha decidido desinstalar completamente Azure PowerShell, envíenos algunos comentarios mediante el cmdlet Send-Feedback. Si se produce un error, le rogamos que abra una incidencia en GitHub.

Desinstalación del MSI de Azure PowerShell

Si ha instalado Azure PowerShell con el paquete MSI, debe desinstalar mediante el sistema Windows en lugar de PowerShell.

Plataforma Instructions
Windows 10 Inicio > Configuración > Aplicaciones
Windows 7
Windows 8
Inicio > Panel de control > Programas > Desinstalar un programa

Cuando esté en esta pantalla, verá Azure PowerShell en la lista de programas. Esta es la aplicación para desinstalar.

Desinstalación desde PowerShell

Si ha instalado Azure PowerShell con PowerShellGet, puede usar el cmdlet Uninstall-Module. Sin embargo, Uninstall-Module solo desinstala un módulo. Para quitar Azure PowerShell completamente, debe desinstalar cada módulo individualmente. La desinstalación puede ser complicada si tiene instaladas varias versiones de Azure PowerShell.

Para comprobar qué versiones de Azure PowerShell están instaladas, ejecute el siguiente comando:

Get-InstalledModule -Name AzureRM -AllVersions
Version              Name                                Repository           Description
-------              ----                                ----------           -----------
6.11.0               AzureRM                             PSGallery            Azure Resource Manager Module
6.13.1               AzureRM                             PSGallery            Azure Resource Manager Module

El script siguiente consulta la Galería de PowerShell para obtener una lista de los submódulos dependientes. A continuación, el script desinstala la versión correcta de cada submódulo. Necesita tener acceso de administrador para ejecutar este script en un ámbito que no sea Process ni CurrentUser.

function Uninstall-AllModules {
  param(
    [Parameter(Mandatory=$true)]
    [string]$TargetModule,

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

    [switch]$Force,

    [switch]$WhatIf
  )

  $AllModules = @()

  'Creating list of dependencies...'
  $target = Find-Module $TargetModule -RequiredVersion $version
  $target.Dependencies | ForEach-Object {
    if ($_.PSObject.Properties.Name -contains 'requiredVersion') {
      $AllModules += New-Object -TypeName psobject -Property @{name=$_.name; version=$_.requiredVersion}
    }
    else { # Assume minimum version
      # Minimum version actually reports the installed dependency
      # which is used, not the actual "minimum dependency." Check to
      # see if the requested version was installed as a dependency earlier.
      $candidate = Get-InstalledModule $_.name -RequiredVersion $version -ErrorAction Ignore
      if ($candidate) {
        $AllModules += New-Object -TypeName psobject -Property @{name=$_.name; version=$version}
      }
      else {
        $availableModules = Get-InstalledModule $_.name -AllVersions
        Write-Warning ("Could not find uninstall candidate for {0}:{1} - module may require manual uninstall. Available versions are: {2}" -f $_.name,$version,($availableModules.Version -join ', '))
      }
    }
  }
  $AllModules += New-Object -TypeName psobject -Property @{name=$TargetModule; version=$Version}

  foreach ($module in $AllModules) {
    Write-Host ('Uninstalling {0} version {1}...' -f $module.name,$module.version)
    try {
      Uninstall-Module -Name $module.name -RequiredVersion $module.version -Force:$Force -ErrorAction Stop -WhatIf:$WhatIf
    } catch {
      Write-Host ("`t" + $_.Exception.Message)
    }
  }
}

Para usar esta función, copie y pegue el código en la sesión de PowerShell. En el ejemplo siguiente se muestra cómo ejecutar la función para quitar una versión anterior de Azure PowerShell.

Uninstall-AllModules -TargetModule AzureRM -Version 4.4.1 -Force

Mientras se ejecuta el script, se mostrará el nombre y la versión de cada submódulo que se está desinstalando. Para ejecutar el script para ver solo lo que se eliminaría, sin quitarlo, use la opción -WhatIf.

Creating list of dependencies...
Uninstalling AzureRM.Profile version 3.4.1
Uninstalling Azure.Storage version 3.4.1
Uninstalling AzureRM.AnalysisServices version 0.4.7
Uninstalling Azure.AnalysisServices version 0.4.7
...

Nota

Si este script no encuentra una dependencia exacta con la misma versión para desinstalar, no se desinstala ninguna versión de dicha dependencia. Esto es porque puede haber otras versiones del módulo de destino en el sistema que se basan en estas dependencias. En este caso, se enumeran las versiones disponibles de la dependencia. Después, puede quitar cualquier versión anterior manualmente con Uninstall-Module.

Ejecute este comando para cada versión de Azure PowerShell que desea desinstalar. Para mayor comodidad, el siguiente script desinstalará todas las versiones de AzureRM excepto la versión más reciente.

$versions = (Get-InstalledModule -Name AzureRM -AllVersions | Select-Object -Property Version)
$versions[0..($versions.Length-2)]  | foreach { Uninstall-AllModules -TargetModule AzureRM -Version ($_.Version) -Force }