Get-RemoteProgram Get list of installed programs on remote or local computer

This script generates a list by querying the registry and returning the installed programs of a local or remote computer. It allows for retrieval of additional properties such as the uninstall string of an application as well.

 
 
 
 
 
4.4 Star
(63)
100,386 times
Add to favorites
Operating System
4/9/2018
E-mail Twitter del.icio.us Digg Facebook
Sign in to ask a question


  • The script doesn't output any results
    2 Posts | Last post February 08, 2018
    • Hi,
      
      I tried to run the command as .\get-remoteprogram and i'm not getting anything then i tried to use the .\get-remoteprogram;get-remoteprogram command and I got an error message.
      
      I'm new to PowerShell so I'm not sure what is the command I need to run in order to get an output file.
      
      
    • You need to load the script into PowerShell before it will be recognised.
      To do this do the following.
      
      1. Open PowerShell, navigate to the directory containing the 'Get-RemoteProgram.ps1' script.
      2. From PowerShel type . .\Get-RemoteProgram.ps1 and hit enter. (Ensure the periods have a space between them or it won't load!!!)
      3. From PowerShell you can then type Get-RemoteProgram and the cmdlet should now be recognised.
      
      If successful once you type 'Get-RemoteProgram' PowerShell will recognise the new function complete with any built-in cmdlets.
      
      If unsuccessful when you attempt to run the new function you will get an error. See Example below.
      
      'get-FunctionName : The term 'get-FunctionName' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.'
      
      *NB: If this occurs repeat steps 1 to 3.
  • Gets output of applications, on machines not even existing?
    6 Posts | Last post February 08, 2018
    • Hi!
      I try to run your Script like this: 
      gc C:\computerlist.txt | Get-RemoteProgram -ExcludeSimilar -SimilarWord 4 | Out-File C:\applications.txt
      
      For test purposes, my computerlist.txt include 3 computernames. The first one is fake, other is my localhost, last one also fake.
      I get two of these warnings, as expected: 
      Exception calling "OpenRemoteBaseKey" with "2" argument(s): "NetworkPath was not found.(translated from Swedish)
      "At C:\Temp\Get-RemoteProgram.ps1:91 char:13
      +             $RegBase = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseK ...
      +             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
          + FullyQualifiedErrorId : IOException
      
      But in my applications.txt I get an output of Applications from my localhost(second) AND the third fake one (it just output the same apps as my localhost).
      
      Why is that? Am I missing something?
    • There is a minor bug in the script. The variable $RegBase is not being cleared between attempts to open a new registry, so the check if($RegBase) returns TRUE even when OpenRemoteBaseKey fails. 
      
      If you add the line "$RegBase = $null" just before the OpenRemoteBaseKey line, it will resolve this issue. 
    • still its not working after adding 
      $RegBase = $null before the OpenRemoteBaseKey line
    • Thank you, Just_M3!
      It solved my issues with computers, not supposed to be there, in my applications.txt!
    • Not working for me either even after adding $RegBase = $null before the OpenRemoteBaseKey line. What have I missed?
    • This happens if 'Remote Registry' service hasn't been started on the target workstation.
  • Target specific applications
    2 Posts | Last post February 08, 2018
    • Hello. I am trying to adopt this script to find a specific program on a list of computers. Is it possible to do this?
    • You need to load the script into PowerShell before it will be recognised.
      To do this do the following.
      
      1. Open PowerShell, navigate to the directory containing the 'Get-RemoteProgram.ps1' script.
      2. From PowerShel type . .\Get-RemoteProgram.ps1 and hit enter. (Ensure the periods have a space between them or it won't load!!!)
      3. From PowerShell you can then type Get-RemoteProgram and the cmdlet should now be recognised.
      
      If successful once you type 'Get-RemoteProgram' PowerShell will recognise the new function complete with any built-in cmdlets.
      
      If unsuccessful when you attempt to run the new function you will get an error. See Example below.
      
      'get-FunctionName : The term 'get-FunctionName' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.'
      
      *NB: If this occurs repeat steps 1 to 3.
      
  • The program run with error. Pls help..
    1 Posts | Last post December 04, 2017
    • PS C:\temp> 'DESKTOP-PC' | Get-RemoteProgram -Property Uninstallstring
      Get-RemoteProgram : The term 'Get-RemoteProgram' is not recognized as the name of a cmdlet, function, script file, or
      operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try
      again.
      At line:1 char:18
      + 'DESKTOP-PC' | Get-RemoteProgram -Property Uninstallstring
      +                  ~~~~~~~~~~~~~~~~~
          + CategoryInfo          : ObjectNotFound: (Get-RemoteProgram:String) [], CommandNotFoundException
          + FullyQualifiedErrorId : CommandNotFoundException
  • Check installed programs under a Windows profile
    1 Posts | Last post October 03, 2017
    • Jaap, Thanks for sharing the great script! I was able to update the script to get programs installed under a user profile. But the problem is it can only check the same user's installed programs on the remote machine as the host machine where I ran the script. I was wondering if I'm the admin on the remote machine, is there a way to check another user's installed programs on that remote machine? Thank you!
  • i ma getting the below error
    3 Posts | Last post August 03, 2017
    • 
      PS C:\Windows\system32> Get-RemoteProgram -ComputerName ldrctxvndbimg01
      Exception calling "OpenRemoteBaseKey" with "2" argument(s): "The network path was not found.
      "
      At C:\Newfolder\Get-RemoteProgram.ps1:91 char:13
      +             $RegBase = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microso ...
      + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
          + FullyQualifiedErrorId : IOException
      
      PS C:\Windows\system32>
      
      
    • HIJAAp,
      please help me out
    • For those running into this error, I have found that the Remote Registry service must be enabled on the remote machine in order for this to work since it queries the registry on the machine to fetch the list of installed software.
      
      If you have the appropriate permissions in your network, you should be able to enable this service remotely by using Computer Management, then connecting to the remote computer, and then view the listing of services on that machine.
      
      I hope this helps and sorry my answer is about a month late.
  • Only working with servers
    2 Posts | Last post May 09, 2017
    • Does this only work with servers? Some of our domain users are part of the local admin group on their computers. I would like to monitor what they are installing on their computers. Checking servers works perfectly fine just not non server versions of windows. 
    • Probably need to enable remote registry and SMB fileshare port 445 rule in the firewall on the Desktops, since in servers they are usually open by default, and desktops they are not.
  • I do not get any output
    1 Posts | Last post April 26, 2017
    • Hello Jaap - thanks for what I hope will be a very resourceful tool!  
      
      When I run this, and I do preface it with ./ and I also redirect the output to a text file with >>out.txt or something similar.  However I get no output.  I have tried adding domain creds, although my logged in account is a domain admin.  The text files get dreated but are empty.  The command completes successfully, meaning I get no error message.  But I get nothing.  THis occurs whether I run it for my local machine by entering simply ./get-remoteprogram.ps1 or if I add the -ComputerName "computer.domain" .  I am running it on a Win7 domain machine.  Fully patched.  Help?
      
      Thanks so much
      
      Joe
  • Additional keys
    1 Posts | Last post March 23, 2017
    • Just learning powershell. So, bear with me. How can I modify this script to pull the system name, product, display version, installdate, uninstallstring? Eventually from a OU.
  • Can we use this script for a list of servers
    1 Posts | Last post February 27, 2017
    • Can we use this script for a list of servers 
11 - 20 of 69 Items