Finding computers that have software installed

Hello everyone,

I’m looking for code that checks on which computers the putty software is installed.
The output need to be exports the list of computer names to 2 files,
In the first file it will be written in which computer names the software is installed and in the second file in which computer names the software is not installed.

Thanks for the helpers.

Adi, welcome to Powershell.org. Please take a moment and read the very first post on top of the list of this forum: Read Me Before Posting! You’ll be Glad You Did!.

When you post code, error messages, sample data or console output format it as code, please.
In the “Text” view you can use the code tags “CODE”, in the “Visual” view you can use the format template “Preformatted”. You can go back edit your post and fix the formatting - you don’t have to create a new one.
Thanks in advance.

This forum is for scripting questions rather than script requests. We do not write customized and ready to use scripts or solutions on request.

What have you tried so far? We expect you to make an own attempt to get your task done or to solve your problem. If you have done so already please document here what exactly you have done and show your code. Then we probably might be able to help you step further.

I think you should search for a software inventory solution for your environment. :wink:

You can try Get-CimInstance with the class Win32_Product to list applications on the system, but it may not list everything installed. Per the github discussion linked by TonyD05 below, this is bad advice and probably won’t give the desired results anyway. Avoid.

Instead, have a look at Microsoft’s documentation on Listing all uninstallable applications.

Since you can just run Putty without an install, this will be a tough task. When a system runs launches Putty.exe, a registry key HKLM:\Software\SimonTatham will be created. But the .exe could be anywhere on that system or on a remotely shared source.

There is also this when using Win32_Product

https://sdmsoftware.com/wmi/why-win32_product-is-bad-news/

https://github.com/PowerShell/DscResources/issues/108

 

This is an excellent point - PuTTY can be run as a portable application without being locally installed. If that is the case, it will be difficult or impossible to find.

As an alternative, if you are just using PuTTY for remote shell sessions, you may be able to replace it with PowerShell remoting over SSH and remove the need for PuTTY.

A client management solution like SCCM could even collect information about local existing not installed executables. :wink: