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.
You can use one of the Sysinternals tools PSinfo:
http://technet.microsoft.com/en-us/sysinternals/bb897550
Issuing
PSinfo -s \\computername
will tell you what is installed on a remote computer.
On an rpm-based Linux distribution, you could run the following:
For a deb-based distribution, pass this to the ssh command:
For Gentoo (per a supplied comment from Monksy):
For Solaris:
And on AIX:
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
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.
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/
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.
You can use WMI from powershell: