powershell get list of installed software on remote computer

To check what software is installed, you can always use Programs and Features in your Control Panel or browse all disk partitions in search of a specific app. Easiest way to run this script is to open up a powerShell window and run 'Import-Module C:\path\to\script.ps1'. Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table AutoSize. return the results. PowerShell, However, because we are talking about alternative routes, let us look at another way to get us to arrive at the same location before we burst the bubble on. Finally, I now need to output an object for each software instance. It also demonstrates our extensive know-how in the area of cloud technologies and ongoing commitment to the implementation and development of solutions for Office 365 and Microsoft Azure. Please donate towards the running of this site if my article has helped you . Would love your thoughts, please comment. The output is going to be definitely longer and you might have to export the list to a CSV file and review the results. Check recently installed software list from the Event Log remotely. How to use Slater Type Orbitals as a basis functions in matrix method correctly? Search CodeTwo articles, user manuals, FAQs & more to find solutions to known issues, troubleshooting guidelines, tips and tricks. Check installed software with remote registry query. On Windows 11 open PowerShell and enter 1 winrm qc This enables Windows Remote Management. Your script work perfectly. You can use a combination of the registry and PowerShell to get a list of installed application. Another method is querying the registry to get the list of installed software. + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound + PSComputerName : pc0013, Connecting to remote server pc0013 failed with the following error message : Access is denied. This is one things I love most about working with Windows PowerShell (and scripting in general) is that most problems have more than one solution. In this article, I am going write Powershell script samples using Get-WmiObject -Class Win32_Product to get installed products in Local and Remote Machine. Get-CimInstance -Class Win32_Product | where vendor -eq 'Veeam Software Group GmbH' | select Name, Version View the list Installed Programs Using the Windows Registry, Command Prompt or PowerShell By clicking Accept all cookies, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy. } There are many guides to configuring this across your environment with things like Group Policy. On Windows 10, this can be achieved by navigating to the Windows icon and then click on the Settings icon, and selectApps. Product Language: . Depending on the way in which the software installed, the software can be found in one of three different registry keys: HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall or HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall for machine-based installs or HKU:\\Software\Microsoft\Windows\CurrentVersion\Uninstall for user-based installs. on How to get the list of installed programs locally and on remote computer in Windows, WinRM cannot complete the operation, verify that the specified computer name is valid, that the computer is accessible over the network, and that a firewall exception for the WinRM service is enabled, How to Enable Two-Factor Authentication for SSH in Linux, How to remove pre-provisioned apps from Windows Image, determine Apps UWP and remove pre-provisioned appx, how to fix Get-CimInstance Access PermissionDenied: (root\cimv2:Win32_OperatingSystem String) [Get-CimInstance], CimException on Windows, query a list of installed programs in Windows via Windows Settings, Control Panel, WMIC, PowerShell and Windows Registry, set the PowerShell Execution Policy via Windows Registry, set PowerShell Execution Policy via Windows Settings, set Execution Policy via Windows PowerShell, add servers to the Trusted Hosts list via PowerShell and command Prompt for the WinRM client, Locate Your PCs BIOS Serial Number and System Information on Windows 11, Enable or Disable WMI Traffic at Command Prompt Using WMI Rule, Query List of installed Apps on Remote PCs, How to Enhance Multi-monitor Experience using Built-in Features on Windows 11, Unable to connect via RDP after installing Norton 360 on Windows, Follow WordPress.com News on WordPress.com. When I wrote this script back in 2009, I was using PowerShell 1.0 and only had to access 32-bit Windows OSs . This is a simple and straightforward query: It has a high level of detail (for example, Caption, InstallDate, InstallSource, PackageName, Vendor, Version, and so on). Get the code Description Get-InstalledSoftware opens up the specified (remote) registry and scours it for installed software. Event ID: 7035/7036Description: The Windows Installer service entered the running state. Error 0x80090311. How do I publish a Remote Desktop Application? Here is a short script that returns the list of applications together with their versions: The above command will list all the software installed on the LM local machine. You can sort results by installation date (to look for software installed in the same date as, for example, Visual Studio) or by vendor to point you into the right direction, but those filters might not be too accurate. First, in an administrative PowerShell console, download and install the PSSoftware PowerShell module from the PowerShell Gallery by running Install-Module PSSoftware. Never again lose customers to poor server speed! Get-CimInstance Win32_Product -ComputerName $computer However, we are just going to query for values and enumerate subkeys. Step 1: After logging into the Action1 dashboard, in the Navigation pane (the left column), select Managed Endpoints and mark the endpoint to get a list of installed software. But the CimCmdlets modules contain cmdlets that interact with Common Information Model (CIM) Servers like the Windows Management Instrumentation (WMI) service. }, Your email address will not be published. In an open PowerShell window or command line terminal with administrative privileges, type wmic. Using any script can I get the list of installed softwares in those computers? Depending on the way in which the software installed, the software can be found in one of three different registry keys: HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall or HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall Meet the CodeTwo team, find out why you should choose our software, and see the companies that already did. You could, however, get a list of all PCs to a CSV file, and then use a foreach loop to go through all the PCs, adding their names to the -ComputerName parameter. The code also contains an exclusion array where you can exclude list of program that you don't want to list in the output. I see that similar mindset and participation reflected in the esprit de corps (or cohesion) of the Windows PowerShell community. Windows PowerShell Step by Step, Third .1.2) (PowerShell only, Command Prompt users please jump to step 1.3 B.) This has been really helpful! This would not a terrible thing to do in your dev or test environment. Learn how to use Powershell to list the installed applications on a computer running Windows in 5 minutes or less. If youre familiar with the Windows Management Instrumentation (WMI) classes and the wealth of information that can be gathered by utilizing the Get-WmiObject cmdlet, an obvious choice might be referencing the Win32_product class. . Instead, they are properties of each of the keys. thumb_up thumb_down Peter (Action1) Brand Representative for Action1 datil This script uses Get-ItemProperty and the Registry provider to retrieve keys from HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\ on 32 and 64 bit computers. Parameters-AdditionalArguments <String[]> Default value is None else { Notify me of followup comments via e-mail. Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |select displayname returns 10 results. You will notice that I added some aliases for the $Name parameter and set it to accept input from the pipeline. Step 3: Choose Script language and type this command to get a list of installed software: I am looking for script which can be run on any server or desktop to know the number of Windows application installed on different VMware virtual desktop and servers. You should look into WinRM as advised by @WillWebb and also look into Powershell Remoting. Windows PowerShell Step by Step Get your Kindle here, or download a FREE Kindle Reading App. While running the CimInstance cmdlets, you may run into issues such as the onces described here WinRM cannot complete the operation, verify that the specified computer name is valid, that the computer is accessible over the network, and that a firewall exception for the WinRM service is enabled. Demo List modules that are installed to one of the known module-locations: Get-Module -ListAvailable Import a module, ex. quick look at the HKLM element bolded above. $Install_soft = gwmi win32_product -ComputerName $Comp -Credential $Connection | Why do small African island nations perform better than African continental nations, considering democracy and human development? You can use the built-in Powershell ISE, too, but it is not being developed any further. Looking at the members for the object: We see a GetValue method. (adsbygoogle = window.adsbygoogle || []).push({}); #mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; } To do that, I'll need to enumerate all of the registry keys under the HKEY_USERS hive. Connect and share knowledge within a single location that is structured and easy to search. Here is the command: Get-WmiObject -Class Win32_Product | Where-Object {$_.Vendor -Match "VM*"} | Select-Object Vendor, Name. Looking for keys that have a user SID in them. Summary: Use Windows PowerShell to find hotfixes installed on your computer. This is handy because I can then refer back to just the array if I need to supply different output. $pcname in each script stands for the name of the remote computer on which we want to get a list of installed software and their versions. So lets spend a few moments looking at a method of determining which applications are installed courtesy of another Windows PowerShell MVP and Honorary Scripting Guy Sean Kearney (EnergizedTech). 07E8: codes were requested from your vehicle's engine module . However, applications can be installed per user as well. I found the original script in the October 2019 issue of "Maximum PC" on page 25, and after some slight modifications, I found it to be quite useful and wanted to share for others to benefit from . Is this possible? The first First of all, it's important to know where exactly the software list is stored. How can we get details on what software was installed by other software? In this method, we simply paste a simple query: Also, we can filter the data to find specific applications from a single vendor, together with their versions, for example: This method is quite easy. $pcname is the name of the computer you want to query. Reconfiguration success or error status: 0. I started in the IT industry in 1996 with DOS and various flavors of *NIX. If you are a Microsoft MVP, you can get free licenses for CodeTwo products. In the search box, type Patches Applied then click the item that will show in the result. If you find an issue with Get-InstalledSoftware, feel free to open an issue on it in my Utilities Github repo. The intention is to display ads that are relevant and engaging for the individual user and thereby more valuable for publishers and third party advertisers. The Windows Management Instrumentation (WMI) Command-Line Utility (WMIC) isa command-line utility that allows users to perform WMI operations from a command prompt. Thanks for contributing an answer to Stack Overflow! For more information, see the about_Remote_Troubleshooting Help topic. machine. Here is a list of some interesting guide: How to remove pre-provisioned apps from Windows Imageand how todetermine Apps UWP and remove pre-provisioned appxin Windows 10. So, with that in mind, lets actually get some specific data from each key! DV - Google ad personalisation. This is legitimate information for an administrator to know. In 2011, I founded the Corpus Christi PowerShell User Group and try to help bring others up to speed on Windows PowerShell. document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() ); CodeTwo sp. Put us all together on the same sheet of music, and we have the potential for some awesome melodies. } These are the attributes for each piece of software. To do that, I'll need to start creating a scriptblock containing all of the code that will be executed on the remote computer. In the InApps & features, youwill see a list of installed Applications. We have created a new article for this topic "How to get the list of installed programs locally and on a remote computer in Windows". A sample query is as follows: We can check a users event log remotely by adding a single attribute (-ComputerName) to the cmdlet used before: If we apply a certain software version via GPO, then we can easily check if this GPO was successfully applied to a user or not. Sure it is an old script, but there aint a faster way to get a real-time list of installed software using PowerShell, guaranteed. In the following example, I query both of my SharePoint Web Front End (WFE) servers by using Invoke-Command to execute the same Get-ItemProperty on the remote systems HKLM PS Registry Provider: Invoke-Command -cn wfe0, wfe1 -ScriptBlock {Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | select DisplayName, Publisher, InstallDate }. If you want to explore the . + CategoryInfo : OpenError: (pc0013:String) [], PSRemotingTransportException + FullyQualifiedErrorId : AccessDenied,PSSessionStateBroken. Its one of the things that makes work interesting. Example Visual Studios installs a ton of software besides Visual Studios. This would not a terrible thing to do in your dev or test environment. You will need the remote registry service (you can start this remotely from the services console) and WMI service running on the remote machine. However, the problem with those methods is that they are as far from quick and automatic as they can be. Whether he's a, Get list of installed programs on remote machine, How Intuit democratizes AI development across teams through reusability. To display only specific software, you can modify the last line to, for example: $list | where { $_.DisplayName -like "Mozilla*"} | select ComputerName, DisplayName, DisplayVersion | FT. hey even i need licenses of installed applications in win, did you find solution for it? PHPSESSID - Preserves user session state across page requests. This also means they would need WinRM enabled. Windows Installer iterates through each of the installed applications, checks for changes, and takes action accordingly. Checking the installed software versions by using PowerShell allows gathering data that we need much quicker. If you run the InstalledSoftware query, it lists all the softwares installed on every computer in the device collection. names of the target computer and user: Then, look for your GPO [Good] The Win32_Product WMI class represents products as they are installed by Windows Installer. You can replace C:\list.txt with another file name or output directory. Microsoft Scripting Guy Ed Wilson here. However, sometimes the best solution is dictated by the environment or requirements you are working with. Were also holding the Microsoft Partner status with the following competencies: Gold Application Development, Gold Cloud Platform, Gold Cloud Productivity, Gold Application Integration, Silver Datacenter and Silver Small and Midmarket Cloud Solutions. Trying to understand how to get this basic Fourier Series. If you create a list of all the computer names in your network, you can use the methods below within a Foreach loop to return results from more than a single remote PC. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer. How to i get powershell to only put the etcetc in a string. You are able to get a wealth of information about this whatever software is installed. What those these codes mean 07E8 07E9. PSRemoting over WinRM is what's used by Invoke-Command. This will connect WMI Explorer to the local computer. The code provided does not work against multiple computers. Click on the different category headings to find out more and change our default settings. Msiexec allows you to install, modify, and run Windows Installer commands from the command line. The Microsoft Partner status indicates that CodeTwo holds significant technical expertise in the development of innovative and reliable software solutions for Microsoft platforms. List Installed Software with PowerShell PS> Get-InstalledSoftware -ComputerName XXXXX When you do this, you will get an object back for each piece of software that's installed. If you have any questions, send email to me at scripter@microsoft.com or post your questions on the Official Scripting Guys Forum. In a script that Sean uploaded to the Microsoft TechNet, , Sean references a technique to enumerate through the registry where the Currently installed programs list from the Add or Remove Programs tool stores all of the Windows-compatible programs that have an uninstall program. Did you actually bother reading the error message? Make sure the Uninstall screen is active. First of all, it's important to know where exactly the software list is stored. Staging Ground Beta 1 Recap, and Reviewers needed for Beta 2, Cannot create remote powershell session after Enable-PSRemoting, How to connect to remote server using powershell, How to authenticate to a remote server using a remote server's local user via Powershell WinRM, Error while running Azure runbook which executes PowerShell command on Virtual Machine, WinRM cannot process the request. Necessary cookies help make a website usable by enabling basic functions like page navigation and access to secure areas of the website. The Scripting Wife and I were lucky enough to attend the first PowerShell User Group meeting in Corpus Christi, Texas. You may also want to read the following guides on how to add servers to the Trusted Hosts list via PowerShell and command Prompt for the WinRM client, and how to determine which execution policy is configured on your Windows device. - the incident has nothing to do with me; can I use this this way? software returned by the script is all the software installed on the LM local It does NOT, however, require PowerShell remoting to be enabled. SoftwareManagement, Obviously, monkeying with the registry is not always an IT pros first choice because it is sometimes associated with global warming. The nature of simulating nature: A Q&A with IBM Quantum researcher Dr. Jamie We've added a "Necessary cookies only" option to the cookie consent popup. You can also subscribe without commenting. The ID is used for serving ads that are most relevant to the user. The Get-Package cmdlet returns a list of all software packages on the local computer that have been installed by using Package Management. Guest Blogger Weekend concludes with Marc Carter. I started in the IT industry in 1996 with DOS and various flavors of *NIX. For the Nozomi from Shinagawa to Osaka, say on a Saturday afternoon, would tickets/seats typically be available - or would you need to book? This WMI class is only loaded during the installation of an SMS/SCCM client. Summary: Guest blogger, Marc Carter, reprises his popular blog post about locating installed software. [String[]]$Computer, The Windows PowerShell Registry provider lets you get, add, change, clear, and delete registry keys, entries, and values in Windows PowerShell. My solution (or a number of reasons) is to rely on using the Invoke-Command cmdlet. In addition, because I prefer working with the ISE environment, I have a modified version of Seans script that I store in a central location and refer back to whenever I need an updated list of installed applications on our servers. To return a list of applications of the currently logged user, we change HKLM to HKCU (CU stands for current user): To check only the recently installed software, we use the following cmdlet to search through the Event Log. Until then, peace. (For more information, see Event log message indicates that the Windows Installer reconfigured all installed applications). I was introduced to VBScript in 2000, and scripting became a regular obsession sometime in 2005. Part 1: Powershell: Get registry value data from remote computer Part 1.1: Microsoft Powershell: Export remote registry information to excel Part 2: Microsoft Powershell: remotely write, edit, modify new registry key and data value Part 3: Microsoft Powershell: Delete registry key or values on remote computer Each of us plays a different note in that we all hear and see things differently. The There was a wrong line break in the code box. Or browse all disk partitions in search of a specific app. ############################################################################################# where {$_.vendor -notlike *Microsoft* -and` if ($Connection -eq $null){ See how organizations such as Microsoft, tech portals and customers rate CodeTwo products. Of course, you can also use a software inventory tool. Ill show you several methods you can use to check that with PowerShell. Id change Where-Object to something like this: Where-Object { $_.DisplayName -and $_.computerName -eq thisComputer}, In conclusion, if you have added Windows PowerShell to your IT tool belt, you have plenty of go-to options when someone asks you, Whats the best solution to a problem?, Thank you, Marc, for writing this post and sharing with our readers. Windows Installer iterates through each of the installed applications, checks for changes, and takes action accordingly. Such is the case for sys admins when determining what software is currently configuring a server. This command will get all of the installed programs on the local machine and return all of the properties retrieved by the command. You could also list all possible information in one command like wmic product get name, version, installlocation. Or press Win + R and run the command: ms-settings:appsfeatures. In the code you have defined: which only limits the function to a single PC. As you look at this . Get-InstalledProgram -All. ############################################################################################# You could also press the Press Windows key + I on your keyboard to open Settings and then click on Apps to view the list of Apps & features. I now have all the code I need to execute on the remote computer. We can use said method like so: And of course, we could write a foreach loop to look at all the values: But that is only good for 1 registry location on 1 computer, so thats not going to do us much of any good, unless you only manage your own computer. I invite you to follow me on Twitter and Facebook. PowerShell comes with a built-in method called Uninstall ().