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
(65)
111,441 times
Add to favorites
Operating System
8/5/2019
E-mail Twitter del.icio.us Digg Facebook
Sign in to ask a question


  • Help with below statement
    5 Posts | Last post April 05, 2018
    • To clarify the below question by me
      
      I'd like to have items in the text file like this
      
      Adobe Air
      Adobe Flash Player
      Adobe Shockwave Player 
      
      This way anything that matches those items gets removed and I'm not tied to versions of the software
    • Hello WindowsUser127,
      
      I have created an issue for filtering the output based on ProgramName, I will update the script and include the changed. You can track the issue here:
      
      https://github.com/jaapbrasser/SharedScripts/issues/18
      
      
      Regards,
      
      Jaap Brasser
    • Well that’s very kind of you.  I can’t believe I’m the first person to bring this up.
      Good luck and thank you!
    • Definitely not just you WindowsUser127. I know I and a number of others (if checking the comment history here) would love getting this added. Just Tweeted Jaap to see the status of making this happen. Hopefully we hear from him.
    • I added this in the latest update 1.4, give it a whirl and let me know what you think!
  • Reading PCs from list & exluding apps from list
    2 Posts | Last post March 06, 2018
    • Love this script Jaap, but hoping there's a way to make it even better for our purpose. Is there a way to:
      - Add the option so instead of typing out all sorts of PC names, it just pulls from like a text file or csv?
      - Like the below user stated, add an option of excluding programs located in a text file or csv?
    • Hello GodzFire,
      
      I have created an issue for the filtering by ProgramName, it is listed here:
      https://github.com/jaapbrasser/SharedScripts/issues/18
      
      As for pulling the PC names from file this is already supported. Here are some examples of how you can get this to work:
      Get-RemoteProgram -ComputerName (Get-Content -Path Computers.txt)
      Import-Csv -Path Computers.csv | Get-RemoteProgram
      Get-Content -Path Computers.txt | Get-RemoteProgram
      
      Let me know if that works for you!
      
      
      Regards,
      
      Jaap Brasser
      
      
  • 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
21 - 30 of 81 Items