Afficher les programmes installés sur la machine distante?

19

Je me demandais s'il existe une méthode simple et légère pour voir quels programmes sont installés sur une machine distante? Je suis tenté d'utiliser Spiceworks mais je voudrais quelque chose de plus léger comme un script. J'ai joué un peu avec WMIC et je peux obtenir une liste de programmes pour mon ordinateur, mais je ne sais pas si je peux en faire de même pour un ordinateur distant. Des idées?

Edit: Désolé d'avoir oublié le système d'exploitation, nous utilisons principalement Windows XP et 7, j'utilise Windows 7. Je cherche quelque chose à exécuter en arrière-plan sans qu'un utilisateur qui utilise actuellement l'ordinateur ne le sache. Je voudrais pouvoir le faire pendant la journée de travail pendant que les gens travaillent et le faire sans les interrompre. J'apprécie les réponses Linux car j'essaie d'en savoir plus sur Linux et je prévois de changer personnellement au cours du temps.

Mobojo
la source
7
Il serait utile de connaître le système d'exploitation de la machine.
ℝaphink
Pourquoi seulement des programmes? Il peut y avoir d'autres éléments protégés par des droits d'auteur sur le système (les fichiers de police et les fichiers mp3 sont des cas évidents)
symcbean
@symcbean Ma principale raison de demander est la licence. Nous avons quelques programmes pour lesquels nous n'avons qu'une poignée de licences et je dois déterminer où les programmes sont installés afin que je puisse déterminer si je peux le désinstaller quelque part afin qu'un autre utilisateur puisse utiliser le programme ou si j'ai besoin d'acheter un nouvelle licence. Les autres choses que j'examinerai plus tard.
Mobojo

Réponses:

19

Vous pouvez utiliser l'un des outils Sysinternals PSinfo:

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

PsInfo v1.77 - Visualiseur d'informations sur le système local et distant Copyright (C) 2001-2009 Mark Russinovich Sysinternals - www.sysinternals.com

PsInfo renvoie des informations sur un système Windows NT / 2000 / XP local ou distant.

Utilisation: psinfo [-h] [-s] [-d] [-c [-t délimiteur]] [filtre] [\ ordinateur [, ordinateur [, ..]] | @file [-u Nom d'utilisateur [-p Mot de passe ]]]

 -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

filtre. Par exemple, "service psinfo" répertorie uniquement le champ Service Pack. ordinateur Direct PsInfo pour exécuter la commande sur le ou les ordinateurs distants spécifiés. Si vous omettez le nom de l'ordinateur, PsInfo exécute la commande sur le système local et si vous spécifiez un caractère générique (\ *), PsInfo exécute la commande sur tous les ordinateurs du domaine actuel. @file PsInfo s'exécutera sur les ordinateurs répertoriés dans le fichier spécifié.

Délivrance

PSinfo -s \\ nom_ordinateur

vous dira ce qui est installé sur un ordinateur distant.

RobW
la source
11

Sur une distribution Linux basée sur rpm, vous pouvez exécuter ce qui suit:

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

Pour une distribution basée sur deb, passez ceci à la commande ssh:

'dpkg-query -l | sort'

Pour Gentoo (selon un commentaire fourni par Monksy ):

'qpkg -I | sort'

Pour Solaris:

'pkginfo -i | sort'

Et sur AIX:

'lslpp -a all | sort'
garenne
la source
1
Gentoo: Si gentoolkit est installé sur gentoo, vous pouvez trouver tous les packages installés avec: "qpkg -I"
monksy
Puis-je l'utiliser sur une machine Linux pour afficher des informations sur une machine Windows ou est-ce uniquement pour Linux vers Linux?
Mobojo
@Mobojo - je ne sais pas si vous pouvez exécuter une commande similaire d'une machine * nix vers une machine Windows; vous devriez certainement pouvoir utiliser n'importe quel client ssh pour exécuter ces commandes à partir de n'importe quelle machine d'origine vers * nix,
warren
6

WMIC peut être utilisé à distance, par défaut, avec un compte qui fait partie du groupe Administrateurs. Vous pouvez déléguer l'accès WMI en lecture seule à un utilisateur normal.

SNMP peut également être utilisé - il vous suffit de configurer une communauté en lecture seule. Vous devez parcourir la table hrSWInstalled:snamwalk -c public -v2c server_IP hrSWInstalled

Voir également: http://technet.microsoft.com/en-us/library/bb742610.aspx

Mircea Vutcovici
la source
6

Voici un script PowerShell qui se connectera à la clé de registre HKLM \ Software \ Microsoft \ Windows \ Uninstall, tirera sur les clés, obtiendra leur nom d'affichage et les enverra dans un fichier texte.

$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
Christophe
la source
2

Il y a un million de programmes qui le feront. Certains plus faciles et légers que d'autres.

Voici juste l'un des innombrables programmes qui font cela:

http://managepc.net/

joeqwerty
la source
1

S'il s'agit d'une machine Windows, vous pouvez exécuter "WinAudit" (gratuit, recherchez-le simplement) sur un travail planifié. Il génère des rapports HTML ou texte et autres, dont vous pouvez enregistrer sur un lecteur réseau et visualiser à partir d'un ordinateur distant.

OU:

Bureau à distance. Vous vous connectez et l'utilisez comme s'il s'agissait d'une machine locale. Fonctionne également dans * nix.

U4iK_HaZe
la source
1

Vous pouvez utiliser WMI depuis PowerShell:

gwmi win32_product -ComputerName Computer1

Ameer Deen
la source