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


  • 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 
  • The term 'Get-RemoteProgram' is not recognized as the name of a cmdlet, function
    2 Posts | Last post February 27, 2017
    • I followed the instructions but I get error 
      
      The term 'Get-RemoteProgram' is not recognized as the name of a cmdlet, function
    • I find the root cause as metioed below here to user " . .\Get-RemoteProgram.ps1  "
  • Great Stuff , I have an issue - Script doesn't give any output
    1 Posts | Last post February 23, 2017
    • Great Stuff , I have an issue - Script doesn't give any output
      
      PS C:\script> . .\Get-RemoteProgram.ps1 >>text
      PS C:\script>
      
      
      
      
      
      
      
      
      
  • Last Access Time
    3 Posts | Last post February 15, 2017
    • Jaap,
      
      Fantastic script you got here!!  So glad I stumbled upon this.  Do you know of a way to utilize your Get-RemoteProgram to display the last accessed time of the program or perhaps the last modified time?  Currently undergoing a software inventory project to see what is really being utilized on our lab computers.
      
      Thanks in Advance!  
    • Hi Evan,
      
      This is something I wrote up that gives the best estimation on the LastAccessTime attribute of the executables of the program. This should only be used as an estimation as the results on my own system are not entirely accurate, as LastAccessTime is notoriously unreliable:
      
      Get-RemoteProgram -Property InstallLocation | Select-Object -Property *,@{
          name       = 'LastAccessTime'
          expression = {if ($_.InstallLocation) {Get-ChildItem -LiteralPath $_.InstallLocation -Recurse -Filter '*.exe'| Sort-Object -Property LastAccessTime | Select-Object -Last 1 -ExpandProperty LastAccessTime}}
      } 
      
      
      Let me know if this helps you.
      
      
      Regards,
      
      Jaap Brasser
    • Jaap,
      
      Thank you for taking the time to post this.  However, I am getting no dates on any of the result when running on my current pc for testing.  Also how would I implement this with the current script I'm using which calls a list of pc names from a text file and exports to a csv?
      
      Thanks again
      
      . .\Get-remoteprogram.ps1
      $a = Get-Content "D:\PC_NAMES.txt"
      
      foreach ($i in $a)
      {$i ; Get-RemoteProgram -ExcludeSimilar -SimilarWord 3 -computername $i | Select-Object -Property Computername,ProgramName | Sort-Object ProgramName | export-csv -append D:\test2.csv} 
  • Get GUID of installed program
    2 Posts | Last post February 15, 2017
    • Hi Jaap,
      
      Thanks a lot for your script. Can not figure out how to get the script to add per installed program the assocuated GUID.
      
      Thanks for your help.
      Hannes
    • Do you mean the GUID used in the UninstallString? You can retrieve that using the following command:
      
      Get-RemoteProgram -Property UninstallString
      
      Let me know if this works for you.
      
      
      Regards,
      
      Jaap Brasser
  • The term 'Get-RemoteProgram' is not recognized as the name of a cmdlet, function, script file, or operable program
    2 Posts | Last post December 02, 2016
    • While executing the script its throwing The term 'Get-RemoteProgram' is not recognized as the name of a cmdlet, function, script file, or operable program, error 
    • Hello Milan_098,
      
      This is probably because you did not dot source the function in the script, try the following to run the function:
      
      . .\Get-RemoteProgram.ps1
      Get-RemoteProgram
      
      Let me know how that works for you.
      
      
      Regards,
      
      Jaap Brasser
  • Run using different credentials
    1 Posts | Last post November 21, 2016
    • Your script is great and provides everything I'm looking for. I'm having some problems running it with different domain credentials though, any chance you could provide an example?
      
      I'm sure it's my lack of understanding of the Invoke-Command method more than anything.
21 - 30 of 73 Items