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
106,764 times
Add to favorites
Operating System
E-mail Twitter Digg Facebook
Sign in to ask a question

  • Host offline
    1 Posts | Last post August 29, 2019
    • Hello Jaap,
      When looping through an array of Hosts, do you have a suggestion for skipping offline Hosts? 
      Right now I am doing this 
      if (Test-Connection -Count 1 -TimeToLive 50 $targetset.Trim() -Quiet){
       Write-Host "Ping was good for " $targetset.Trim()
       $results += Get-RemoteProgram -ComputerName $targetset.Trim() -Property DisplayVersion | Where-Object ProgramName -eq 'Symantec Endpoint Protection' 
       else{Write-Host "Could not ping " $targetset.Trim()}
      Which works, but it's really slow.
  • -ExcludeSimilar -SimilarWord
    1 Posts | Last post August 15, 2019
    • Hello,
      I'm attempting to use this, which is an absolute god send but it's failing to pick this up for me.
      It will consistently return values that have the exact same programname but different uninstall strings and different regpaths
      RightFax Product Suite - Client
      Even if set at 1 or 2, it will return this and Adobe Air
      Get-RemoteProgram -ComputerName $c -ExcludeSimilar -SimilarWord 1 -DisplayRegPath | Sort-Object ProgramName
  • Error Logging
    1 Posts | Last post August 14, 2019
    • Hi,
      first, i tested the script on Windows Server 2016 and Windows 10 OS - is working
      my problem is, that i get no Logging. I have a List with over 100 Server and if i run the script to scan the software on this servers i get some errors, but i dont know on which server it is.
      For example:
      Get-RemoteProgram : Exception calling ".ctor" with "2" argument(s): "A connection attempt failed because the connected
      party did not properly respond after a period of time, or established connection failed because connected host has
      failed to respond"
      At \\XXX\Share-TSADM$\scripts\WS-Server\Server\Get-RemoteProgram\Run_With_PowerShell.ps1:3 char:38
      + ... rList.txt | Get-RemoteProgram -Property Publisher,InstallDate,Display ...
      +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
          + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Get-RemoteProgram
      Get-RemoteProgram : Exception calling "OpenSubKey" with "1" argument(s): "Requested registry access is not allowed."
      At \\XXX\Share-TSADM$\scripts\WS-Server\Server\Get-RemoteProgram\Run_With_PowerShell.ps1:3 char:38
      + ... rList.txt | Get-RemoteProgram -Property Publisher,InstallDate,Display ...
      +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
      How i know on which server i got this errors?
      Thanks in advance.
  • No output after running script
    3 Posts | Last post August 03, 2019
    • I've run the script on a Windows 7 and Windows 10 computer and not getting any output.  I have a powershell window open with run as admin.
      This is the command line I enter on the prompt
      Any idea why I'm not getting any output?
    • Found my issue.  This is function and has to be called from a powershell script.  Load the module into your powershell script then call it.
    • Glad to hear you resolved the issue, let me know if there's anything else I can help you with!
  • Want modification?
    3 Posts | Last post August 02, 2019
    • Hi, Jaap.
      I made some changes to this script because it was missing installed programs in HKCU. Because that involved using a different base key, the changes were a bit more involved than just adding another string to the $RegistryLocation array.
      If you care, I can send you my version. Let me know.
    • Hello chip. I just found out the same. Would it be possible to get a copy of your modified script?
    • There is an updated version of the script available, let me know how that works for you!
  • Search HKCU
    2 Posts | Last post August 02, 2019
    • Awesome script and have put it to good use but just found that it isn't finding a known installed program that resides in the HKCU registry section. Is the script supposed to search both HKCU and HKLM?
    • Hello jcfrazier6,
      I have updated my script and have added some additional features as well, let me know if this works better for you!
      Here is the changelog for the 1.5 version:
      Version 1.5 - Feature update
      Added -DisplayRegPath switch parameter, displays which registry key was queried for the program
      Added -MicrosoftStore switch parameter, queries currentuser package list to also list installed Microsoft Store packages
      Added Write-Verbose statement to follow what the script is querying
      Now also queries HKCU, before only queried HKLM which did not provide a full list of installed programs
  • Calling the following uninstall string
    1 Posts | Last post March 28, 2019
    • Any idea how I can call the following uninstall string? 
      MsiExec.exe /I{B454B5C8-5C87-4F24-B9F5-2A9A199F08F5}
  • Task Scheduler
    3 Posts | Last post January 31, 2019
    • Great Stuff!  I am new to powershell but I was wondering if you may suggest how i can run this in some sort of task scheduler or batch script?
      I don't have any issue when i run it in powershell but i would like to create it as a batch so that i can run it as standalone or in the task scheduler.
      I am using the command below 
      Get-Content -Path C:\serverlist.txt | Get-RemoteProgram 
    • try running as 
      PowerShell.exe -NoProfile -ExecutionPolicy Bypass -command "& {. .\Get-RemoteProgram.ps1;Get-RemoteProgram -ComputerName (Get-Content -Path C:\serverlist.txt) -Property DisplayVersion,VersionMajor}";
    • +1, thnks!
  • Possibility to have hostname and use the -or clause
    1 Posts | Last post November 13, 2018
    • Is it possible to have a field that tells me the name of the pc (hostname) if in the node I introduce the ip addresses and it is possible -IncludeProgram to use the -or clause?
      I thank you in advance I tried to do it with this code but it gives me an error
      $ nodes = 19..200 | % {"172.17.160. $ _"}
      #$Programs = $ '* Office *', '* Autocad *'
      Get-RemoteProgram -ComputerName $ nodes -IncludeProgram ('*Office*' -or '*Autocad*') | Sort-Object ProgramName | Export-Csv -Path c:\TEMP\PcConProgrammi.txt -Force
  • Program Name length
    1 Posts | Last post July 24, 2018
    • Does anyone know how i can increase the Program Name length instead of the ...
      e.g. Symantec Netback... should be Symantec Netbackup
      ComputerName        ProgramName         DisplayVersion      VersionMajor       
      ------------        -----------         --------------      ------------       
      Compute1            Microsoft System... 12.2.5579.0         12                 
      Compute1            Symantec NetBack... 7.7.3               7                  
      Compute1            SQL Server 2014 ... 12.2.5000.0         12                 
      Compute1            SQL Server 2014 ... 12.2.5000.0         12                 
      Compute1            SQL Server 2014 ... 12.2.5000.0         12   
1 - 10 of 74 Items