Big business usually means big $$, though.

What if you’re in an organization with little-to-no budget?

Maybe yourself or someone on your team has gotten into using PowerShell to automate various tasks?

In that case, using PowerShell to manage software across many endpoints at once may be beneficial.

Working with software on remote computers is a piece of cake!

Where Software Is Registered

The term “software” is a vague term, especially on Windows.

Software installers copy files, create registry keys, add WMI instances, and more.

Every modern version of Windows stores installed software information in the three registry keys below.

Inside of that key, you could find registry values for software title, version, and more.

it’s possible for you to test PowerShell Remoting by attempting to execute a simple command like

.

If this fails, the rest of the information covered in this article won’t work either.

I created a PowerShell module called PSSoftware a while back that solves this problem well.

when you’ve got the module installed, inspect the commands available to you by running

.

You’ll see a few commands like

,

,and

.

These commands are the main functions to manage software.

In this article, I focus on the

function.

Test out the

command by first running it locally with no parameters.

You immediately see many different software packages fly by.

you’ve got the option to limit that output down to just the title and version using theSelect-Objectcmdlet.

To query a remote computer, use theComputerNameparameter.

The same software packages are returned.

Perhaps you’d rather not see all installed software but just software matching a specific title.

you’re free to filter this information using theWhere-Objectcmdlet.

The following example finds all the software that starts with SQL on the remote computer.

Using free community PowerShell modules is a great way to build software inventor reports on the cheap!