Gather Remote Installed Programs With Powershell

Gather program install information for one or more systems using wmi, alternate credentials, and multiple runspaces. Function supports custom timeout parameters in case of wmi problems and returns from the registry program name, manufacturer, and uninstall information. You can view verbose information on each runspace thread in realtime with the -Verbose option.

 Version History

1.0.0 – 08/27/2013

  • Initial release


Download the script from the technet gallery (more frequently updated)

Download the script from this site (less frequently updated)

Comments (3)

  1. 3:25 AM, 02/05/2014Peter Kriegel  / Reply

    Hi Zachary !
    Please ignore my las comment!
    I am a silly idiot ! I do not have taken a look into your code … sorry …
    Your code is awesome good!

    • 11:34 PM, 02/05/2014Zachary Loeber  / Reply

      I’m not ignoring you comment good sir because it was good information to know and something I was not aware of before 🙂 As always, I appreciate the feedback (and your code is awesome good too!).


  2. 3:19 AM, 02/05/2014Peter Kriegel  / Reply

    Hi Zachary!

    You have an awesome Blog!

    The WMI/CIM Win32_Product class is considered evil!

    It is not recomende to use WMi/CIM and the class Win32_Product for this task!
    Unfortunately, Win32_Product uses a provider DLL that validates the consistency of every installed MSI package on the computer.
    If a Software installation is inconsistent the Sofware starts to try to repair themself with a reinstallation!
    That makes it very, very slow and in case of a inconsistent Software the task will hang!


    I have developed a Get-Software function which take use of the registry “uninstall” key instead.
    See here:

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Pingbacks (0)

› No pingbacks yet.


Get every new post delivered to your Inbox

Join other followers