Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I was wondering if there is an easy and lightweight method to viewing what programs are installed on a remote machine? I am tempted to use Spiceworks but I would like something more lightweight like a script. I have been playing around with WMIC a little and can get a list of programs for my computer but I don't know if I can do the same with it for a remote computer. Any ideas?

Edit: Sorry that I forgot the OS, we are using mostly Windows XP and 7, I use Windows 7. I am looking for something to be run in the background without a user that is currently using the computer knowing. I would like to be able to do it during the workday while people are working and do so without interrupting them. I do appreciate the Linux answers since I am trying to learn more about Linux and plan to personally change over sometime.

share|improve this question
7  
It would help to know the OS of the machine. –  ℝaphink Sep 12 '11 at 20:50
    
Why just programs? There may be other copyrighted material on the system (font files and mp3s are obvious cases) –  symcbean Sep 13 '11 at 12:45
    
@symcbean My main reason to ask is for licensing. We have a couple programs that we only have a hand full of licenses for and I need to figure out where the programs are installed so I can determine if I can uninstall it somewhere so another user can use the program or if I need to purchase a new license. The other stuff I will look into at a later point. –  Mobojo Sep 13 '11 at 17:27

7 Answers 7

up vote 14 down vote accepted

You can use one of the Sysinternals tools PSinfo:

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

PsInfo v1.77 - Local and remote system information viewer Copyright (C) 2001-2009 Mark Russinovich Sysinternals - www.sysinternals.com

PsInfo returns information about a local or remote Windows NT/2000/XP system.

Usage: psinfo [-h] [-s] [-d] [-c [-t delimiter]] [filter] [\computer[,computer[,..]]|@file [-u Username [-p Password]]]

 -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

filter. e.g. "psinfo service" lists only the service pack field. computer Direct PsInfo to perform the command on the remote computer or computers specified. If you omit the computer name PsInfo runs the command on the local system, and if you specify a wildcard (\*), PsInfo runs the command on all computers in the current domain. @file PsInfo will run against the computers listed in the file specified.

Issuing

PSinfo -s \\computername

will tell you what is installed on a remote computer.

share|improve this answer

On an rpm-based Linux distribution, you could run the following:

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

For a deb-based distribution, pass this to the ssh command:

'dpkg-query -l | sort'

For Gentoo (per a supplied comment from Monksy):

'qpkg -I | sort'

For Solaris:

'pkginfo -i | sort'

And on AIX:

'lslpp -a all | sort'
share|improve this answer
1  
Gentoo: If you have gentoolkit installed on gentoo you can find out all of the installed packages with: "qpkg -I" –  monksy Sep 13 '11 at 14:37
    
Can I use this on a Linux machine to view information on a Windows machine or is it just for Linux to Linux? –  Mobojo Sep 14 '11 at 13:05
    
@Mobojo - not sure if you can run a similar command from a *nix machine to a Windows one; you should certainly be able use any ssh client to run these commands from any originating machine to *nix, though –  warren Sep 14 '11 at 13:34

WMIC can be used remotely, by default, with an account that is part of Administrators group. You can delegate read-only WMI access to a normal user.

SNMP can be used too - you just need to configure a read-only community. You need to browse hrSWInstalled table: snamwalk -c public -v2c server_IP hrSWInstalled

See also: http://technet.microsoft.com/en-us/library/bb742610.aspx

share|improve this answer

Here is a PowerShell script that will connect to the HKLM\Software\Microsoft\Windows\Uninstall registry key, pull the keys, get their display names and send to a text file.

$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
share|improve this answer

There are a million programs that will do this. Some more easy and lightweight than others.

Here's just one of the innumerable programs that do this:

http://managepc.net/

share|improve this answer

If it's a windows machine, you can run "WinAudit" (free, just search for it) on a scheduled job. It generates HTML or text reports and such, of which you can save to a network drive and view from a remote computer.

OR:

Remote desktop. You connect, and use it as if it were a local machine. Works in *nix too.

share|improve this answer

You can use WMI from powershell:

gwmi win32_product -ComputerName Computer1

share|improve this answer

protected by sysadmin1138 Mar 29 '13 at 12:00

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.