A huge collection of 3400+ free website templates JAR theme com WP themes and more at the biggest community-driven free web design site
Home / Business / PowerShell: Get UninstallString Automatizado

PowerShell: Get UninstallString Automatizado

La siguiente función recupera información sobre las aplicaciones instaladas. La función buscará ubicaciones de 32 bits, 64 bits y HKEY_USERS en el registro, que luego podremos usar para realizar un script de desinstalacion silenciosa, bien porque necesitemos desinstalar dicho Software, o realizar algún upgrade de versión y sea necesario borrar la aplicación en caso de existir.

El script es el siguiente:

Function Get-Uninstall
{
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string]$Computer,
[Parameter(Mandatory=$true)]
[string]$Product
)
$REGPATHS = @(«SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall», «SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall»)
ForEach ($RegPath in $RegPaths)
{
$HKLM = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(‘LocalMachine’, $Computer, ‘Registry64’)
$HKLM_SUBKEY = $HKLM.OpenSubKey($RegPath)
$HKLM_SUBKEY.GetSubKeyNames() | ForEach {
$SubKey = $HKLM_SUBKEY.OpenSubKey($_)
If ($SubKey.GetValue(«DisplayName») -like $Product)
{
$Object = New-Object PsObject
$Object | Add-Member NoteProperty MachineName $Computer
$Object | Add-Member NoteProperty GUID $SubKey.Name
$Object | Add-Member NoteProperty DisplayName $SubKey.GetValue(«DisplayName»)
$Object | Add-Member NoteProperty DisplayVersion $SubKey.GetValue(«DisplayVersion»)
$Object | Add-Member NoteProperty InstallLocation $SubKey.GetValue(«InstallLocation»)
$Object | Add-Member NoteProperty InstallSource $SubKey.GetValue(«InstallSource»)
$Object | Add-Member NoteProperty Publisher $SubKey.GetValue(«Publisher»)
$Object | Add-Member NoteProperty QuietUninstallString $SubKey.GetValue(«QuietUninstallString»)
$Object | Add-Member NoteProperty UninstallString $SubKey.GetValue(«UninstallString»)
$Object
}
$SubKey.Close()
}
$HKLM_SUBKEY.Close()
$HKLM.Close()
}
$HKEYUSERS = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(‘USERS’, $Computer)
$HKEYUSERS_ALL = $HKEYUSERS.GetSubKeyNames()
$HKEYUSERS_ALL | ForEach-Object {
$UNINSTALL_KEY = «$_\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall»
$UNINSTALL_SUBKEY = $HKEYUSERS.OpenSubKey($UNINSTALL_KEY)
If ($UNINSTALL_SUBKEY)
{
$UNINSTALL_SUBKEY.GetSubKeyNames() | ForEach {
$SUBKEY = $UNINSTALL_SUBKEY.OpenSubKey($_)
If ($SUBKEY.GetValue(«DisplayName») -like «$ProdProductuct»)
{
$Object = New-Object PsObject
$Object | Add-Member NoteProperty MachineName $Computer
$Object | Add-Member NoteProperty GUID $SubKey.Name
$Object | Add-Member NoteProperty DisplayName $SubKey.GetValue(«DisplayName»)
$Object | Add-Member NoteProperty DisplayVersion $SubKey.GetValue(«DisplayVersion»)
$Object | Add-Member NoteProperty InstallLocation $SubKey.GetValue(«InstallLocation»)
$Object | Add-Member NoteProperty InstallSource $SubKey.GetValue(«InstallSource»)
$Object | Add-Member NoteProperty Publisher $SubKey.GetValue(«Publisher»)
$Object | Add-Member NoteProperty QuietUninstallString $SubKey.GetValue(«QuietUninstallString»)
$Object | Add-Member NoteProperty UninstallString $SubKey.GetValue(«UninstallString»)
$Object
}
$SUBKEY.Close()
}
$UNINSTALL_SUBKEY.Close()
}
}
$HKEYUSERS.Close()
}

 

Una vez ejecutado el Script debemos indicarle que nos exporte los datos sobre la aplicacion que necesitamos obtener el UninstallString.
En mi caso he decidido exportar el DisplayName, DisplayVersion y GUID  ya que son datos que voy a necesitar despues, ya que mi idea es comprobar si existe esa aplicacion mediante el Registro. (Dicho Script lo veremos en otro post)

Get-Uninstall -Computer $ENV:COMPUTERNAME -Product «*Java*» | Select-Object DisplayName, DisplayVersion, GUID, UninstallString -Verbose | export-csv ‘c:\exportUninstall.txt’  

Espero que les haya gustado y servidor de ayuda.
Un saludo =)

Jesus

Sobre nosotros administrador

Check Also

WMI freatures PS

We got a question on Twitter about an older function I has posted to get …

Deja un comentario