Si no tiene una herramienta de implementación de software, como PDQ Deployment, desinstalar programas de una computadora remota puede ser bastante doloroso. Y una vez más, aquí es donde brilla PowerShell.
En primer lugar, veamos cómo obtener una lista de programas instalados en una computadora remota:
Get-WmiObject Win32_Product -ComputerName $computername | Select-Object -Property IdentifyingNumber, Name
Para encontrar un programa específico instalado en una computadora remota:
Get-WmiObject Win32_Product -ComputerName $computername | Where-Object {$_.IdentifyingNumber -eq $number}
Ahora, desinstalemos ese programa.
(Get-WmiObject Win32_Product -ComputerName $computername | Where-Object {$_.IdentifyingNumber -eq $number}).Uninstall()
Para evitar el mensaje de error al intentar desinstalar un programa que no existe.
$ComputerName="Computer"
$number="{AC76BA86-1033-FFFF-7760-0E1108756300}" #Adobe Acrobat ID
$adobe = Get-WmiObject Win32_Product -ComputerName $ComputerName | Where-Object {$_.IdentifyingNumber -eq $number}
if ($adobe) {
$adobe.Uninstall()
}
else {
$number + ' is not installed on ' + $ComputerName
}
¿Qué tal instalar un programa en una computadora remota? Eso es un poco más complicado y depende del paquete de instalación. Si se trata de un paquete MSI o un paquete que tiene una opción silenciosa, PowerShell debería poder encargarse de ello.
Si el paquete de instalación ya está en la computadora remota,
Invoke-Command -ComputerName $computer -ScriptBlock {
Start-Process 'c:tempsetup.exe' -ArgumentList '/slient' -Wait
}
Pero si no es así, primero deberá copiar el paquete y luego ejecutar el proceso de instalación.
A continuación, se muestra un ejemplo más completo:
$computer="computer1"
$session = New-PSSession -ComputerName $computer
Copy-Item -Path '\serversoftwaresophosetup.exe' -ToSession $session -Destination 'c:windowstempsophossetup.exe' -Force
Invoke-Command -Session $session -ScriptBlock {
Start-Process 'c:windowstempsophosSetup.exe' -ArgumentList '--quiet' -Wait
Move-Item -Path 'c:windowstempsophossetup.exe'
}
Tomé el software de Sophos como ejemplo, pero debería hacerse una idea.
Finalmente, pensé mencionar que para que los scripts de PowerShell funcionen en computadoras remotas, hay dos requisitos previos que deben cumplirse.
- WinRM debe estar habilitado en la computadora remota
- Necesita las credenciales adecuadas para ejecutar el script en la computadora remota.