Como detectar la version de Rollup instalada en Exchange 2007 o 2010


Una de las cosas que siempre se preguntamos cuando hacemos una visita, o estamos en un caso de soporte es: “que version de Exchange y Rollup esta instalado en sus servidores?”  a lo cual muchas veces la respuesta es: “ah si, el Exchange es 20XX, Service Pack X…. pero el rollup no se….. Surprised smile” y para varios de nosotros asi como veremos en posteriores articulos, el valor del rollup update es necesario conocerlo.   Para conocer este, hay varias formas que permiten conocer este valor, pero como suele suceder, cada una tiene sus ventajas y desventajas Smile

primero que todo, la forma grafica es muy util esto se hace, por medio del complemento de programas y caracteristicas  que se localiza en el panel de control,

  image

ahi, seleccionamos la opcion “view installed updates”

image

con eso, podemos ver el rollup instalado, que en este caso es el 2.

image

y con eso sabemos la version de rollup update. Pero que tiene de desventaja este proceso? pues que si lo haces en 5 o 10 servidores tomara algo de tiempo, asi que para hacerlo masivo, esta la siempre util opcion del script.

pero la opcion  usual que es usar el comando get-exchangeServer ofece unicamente informacion de version, pero no de rollup, para obtener esta, nos debemos conectar al registro de la maquina y obtener las llaves de registro de las actualizaciones del producto.

para hacer la historia corta, estas llaves son:

para Exchange 2007:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\461C2B4266EDEF444B864AD6D9E5B613\Patches\

y para Exchange 2010:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\AE1D439464EB1B8488741FFA028E291C\Patches\

y el script que consulta estas llaves de registro para sus servidores es el que encontramos a continuacion, lo interesante es que este script esta adaptado tanto para Exchange 2007 como Exchange 2010.

#Get-ExchangeServerPlus.ps1
#v1.3, 07/11/2011
#Written By Paul Flaherty, blogs.flaphead.com
#Modified by Jeff Guillet, www.expta.com
#modified by Gregorio Parra, blogs.technet.com
 
 
#Get a list of Exchange servers in the Org excluding Edge servers
$MsxServers = Get-ExchangeServer | where {$_.ServerRole -ne "Edge" } | where {$_.ServerRole -ne "ProvisionedServer" } | sort Name
 
#Loop through each Exchange server that is found
ForEach ($MsxServer in $MsxServers)
{
 
    #Get Exchange server version
    $MsxVersion = $MsxServer.ExchangeVersion
 
    #Create "header" string for output
    # Servername [Role] [Edition] Version Number
    $majorver = $MsxServer.AdminDisplayVersion.Major
    $txt1 = $MsxServer.Name + " [" + $MsxServer.ServerRole + "] [" + $MsxServer.Edition + "] [" + $MsxServer.AdminDisplayVersion + "] [Version:" + $majorver + "]"
    write-host $txt1
 
    #Connect to the Server's remote registry and enumerate all subkeys listed under "Patches"
    $Srv = $MsxServer.Name
    $key = ""
 
    #define the registry key, depending on Exchange Version 2007 or 2010
    if ($majorver -eq "8") # Exchange 2007
    {
       $key = "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\461C2B4266EDEF444B864AD6D9E5B613\Patches\"
    }
    if ($majorver -eq "14") # Exchange 2010
    {
       $key = "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\AE1D439464EB1B8488741FFA028E291C\Patches\"
    }
    $type = [Microsoft.Win32.RegistryHive]::LocalMachine
    $regKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($type, $Srv)
    $regKey = $regKey.OpenSubKey($key)
 
    #Loop each of the subkeys (Patches) and gather the Installed date and Displayname of the Exchange 2007 patch
    $ErrorActionPreference = "SilentlyContinue"
    ForEach($sub in $regKey.GetSubKeyNames())
    {
        Write-Host "- " -nonewline
        $SUBkey = $key + $Sub
        $SUBregKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($type, $Srv)
        $SUBregKey = $SUBregKey.OpenSubKey($SUBkey)
        ForEach($SubX in $SUBRegkey.GetValueNames())
        {
            # Display Installed date and Displayname of the Exchange 2007 patch
            IF ($Subx -eq "Installed")   {
                $d = $SUBRegkey.GetValue($SubX)
                $d = $d.substring(4,2) + "/" + $d.substring(6,2) + "/" + $d.substring(0,4)
                write-Host $d -NoNewLine
            }
            IF ($Subx -eq "DisplayName") {write-Host ": "$SUBRegkey.GetValue($SubX)}
        }
    }
    write-host ""
}

adjunto, envio el archivo del Script

disfrutenlo !

-GP

Get-ExchangeServerVersion-v1.zip

Comments (0)

Skip to main content