Ver programas instalados en la máquina remota?

19

Me preguntaba si hay un método fácil y ligero para ver qué programas están instalados en una máquina remota. Estoy tentado a usar Spiceworks pero me gustaría algo más ligero como un script. He estado jugando un poco con WMIC y puedo obtener una lista de programas para mi computadora, pero no sé si puedo hacer lo mismo con una computadora remota. ¿Algunas ideas?

Editar: Perdón por haber olvidado el sistema operativo, estamos usando principalmente Windows XP y 7, uso Windows 7. Estoy buscando algo que se ejecute en segundo plano sin que un usuario que actualmente está usando la computadora lo sepa. Me gustaría poder hacerlo durante la jornada laboral mientras la gente está trabajando y hacerlo sin interrumpirlos. Aprecio las respuestas de Linux ya que estoy tratando de aprender más sobre Linux y planeo cambiar personalmente en algún momento.

Mobojo
fuente
77
Sería útil conocer el sistema operativo de la máquina.
phaphink
¿Por qué solo programas? Puede haber otro material con derechos de autor en el sistema (ficheros y archivos MP3 son casos evidentes)
symcbean
@symcbean Mi razón principal para preguntar es por la licencia. Tenemos un par de programas para los que solo tenemos un puñado de licencias y necesito averiguar dónde están instalados los programas para poder determinar si puedo desinstalarlo en algún lugar para que otro usuario pueda usar el programa o si necesito comprar un nueva licencia Las otras cosas que analizaré más adelante.
Mobojo

Respuestas:

19

Puede utilizar una de las herramientas de Sysinternals PSinfo:

http://technet.microsoft.com/en-us/sysinternals/bb897550

PsInfo v1.77 - Visor de información del sistema local y remoto Copyright (C) 2001-2009 Mark Russinovich Sysinternals - www.sysinternals.com

PsInfo devuelve información sobre un sistema Windows NT / 2000 / XP local o remoto.

Uso: psinfo [-h] [-s] [-d] [-c [-t delimitador]] [filtro] [\ computer [, computer [, ..]] | @file [-u nombre de usuario [-p contraseña ]]]

 -u        Specifies optional user name for login to
           remote computer.
 -p        Specifies password for user name.
 -h        Show installed hotfixes.
 -s        Show installed software.
 -d        Show disk volume information.
 -c        Print in CSV format
 -t        The default delimiter for the -c option is a comma,
           but can be overriden with the specified character. Use
           "\t" to specify tab.
 filter    Psinfo will only show data for the field matching the

filtrar. por ejemplo, "servicio psinfo" solo muestra el campo del paquete de servicio. computer Direct PsInfo para ejecutar el comando en la computadora remota o en las computadoras especificadas. Si omite el nombre de la computadora, PsInfo ejecuta el comando en el sistema local y si especifica un comodín (\ *), PsInfo ejecuta el comando en todas las computadoras del dominio actual. @file PsInfo se ejecutará en las computadoras enumeradas en el archivo especificado.

Emisor

PSinfo -s \\ computername

le dirá lo que está instalado en una computadora remota.

RobW
fuente
11

En una distribución de Linux basada en rpm, puede ejecutar lo siguiente:

ssh <user-who-can-run-rpm>@<remote.host> 'rpm -qa | sort'

Para una distribución basada en deb, pase esto al comando ssh:

'dpkg-query -l | sort'

Para Gentoo (según un comentario proporcionado por Monksy ):

'qpkg -I | sort'

Para Solaris:

'pkginfo -i | sort'

Y en AIX:

'lslpp -a all | sort'
madriguera
fuente
1
Gentoo: Si tiene instalado gentoolkit en gentoo, puede encontrar todos los paquetes instalados con: "qpkg -I"
monksy
¿Puedo usar esto en una máquina Linux para ver información en una máquina Windows o es solo para Linux a Linux?
Mobojo
@Mobojo: no estoy seguro si puede ejecutar un comando similar desde una máquina * nix a una de Windows; sin duda, debe ser capaz de utilizar cualquier cliente ssh para ejecutar estos comandos desde cualquier máquina de origen a * nix, aunque
Warren
6

WMIC se puede usar de forma remota, de forma predeterminada, con una cuenta que forme parte del grupo Administradores. Puede delegar el acceso WMI de solo lectura a un usuario normal.

También se puede usar SNMP: solo necesita configurar una comunidad de solo lectura. Debe examinar la tabla hrSWInstalled:snamwalk -c public -v2c server_IP hrSWInstalled

Ver también: http://technet.microsoft.com/en-us/library/bb742610.aspx

Mircea Vutcovici
fuente
6

Aquí hay un script de PowerShell que se conectará a la clave de registro HKLM \ Software \ Microsoft \ Windows \ Desinstalar, extraer las claves, obtener sus nombres para mostrar y enviar a un archivo de texto.

$temparray=@()
$MachineName = 'somecomputername'
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::'LocalMachine', $MachineName)

#connect to the needed key :

$regKey= $reg.OpenSubKey("software\Microsoft\Windows\currentversion\uninstall\" )

#and list the properties :

$programs = $regkey.GetSubKeyNames()
foreach ($program in $programs)
{   
    $regKey2 = $regKey.OpenSubKey($program)

    $temparray +=  $regKey2.GetValue("DisplayName")
}
$temparray |Sort-Object |Out-File -FilePath "C:\testinstalledprograms.txt" -Force
Christopher
fuente
2

Hay un millón de programas que harán esto. Algunos más fáciles y ligeros que otros.

Este es solo uno de los innumerables programas que hacen esto:

http://managepc.net/

joeqwerty
fuente
1

Si se trata de una máquina Windows, puede ejecutar "WinAudit" (gratis, solo búsquelo) en un trabajo programado. Genera informes HTML o de texto y demás, de los cuales puede guardarlos en una unidad de red y verlos desde una computadora remota.

O:

Escritorio remoto. Se conecta y lo usa como si fuera una máquina local. Funciona en * nix también.

U4iK_HaZe
fuente
1

Puede usar WMI desde powershell:

gwmi win32_product -ComputerName Computer1

Ameer Deen
fuente