 {"id":519686,"date":"2023-01-04T19:49:00","date_gmt":"2023-01-05T02:49:00","guid":{"rendered":"https:\/\/jorgep.com\/blog\/?p=519686"},"modified":"2026-02-18T13:02:16","modified_gmt":"2026-02-18T20:02:16","slug":"whats-on-your-machine-3-ways-to-list-installed-apps-via-powershell","status":"publish","type":"post","link":"https:\/\/jorgep.com\/blog\/whats-on-your-machine-3-ways-to-list-installed-apps-via-powershell\/","title":{"rendered":"What\u2019s on Your Machine? 3 Ways to List Installed Apps via PowerShell"},"content":{"rendered":"\n<p>Whether you are auditing a new workstation, cleaning up your own PC, or preparing for a fresh Windows install, you often need a complete list of what is actually installed. While the &#8220;Add or Remove Programs&#8221; menu is fine for casual use, PowerShell offers more power, more detail, and the ability to export your results.<\/p>\n\n\n\n<p>Here are the three best ways to pull a full software inventory from your machine.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. The Deep Dive: Querying the Windows Registry<\/h3>\n\n\n\n<p>This is the most thorough method for finding traditional desktop software (.exe and .msi). It checks the &#8220;Uninstall&#8221; keys in the registry for 64-bit, 32-bit, and user-specific applications.<\/p>\n\n\n\n<p>PowerShell<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Get-ItemProperty HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*, \n                 HKLM:\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*, \n                 HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* | \n    Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | \n    Where-Object { $_.DisplayName -ne $null } | \n    Sort-Object DisplayName\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. The Modern Standard: <code>winget list<\/code><\/h3>\n\n\n\n<p>If you are on Windows 10 or 11, you likely have the <strong>Windows Package Manager<\/strong> (winget) built-in. It provides a clean, formatted table that includes both traditional apps and Microsoft Store apps.<\/p>\n\n\n\n<p>To see your list, simply run:<\/p>\n\n\n\n<p>PowerShell<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>winget list\n<\/code><\/pre>\n\n\n\n<p>Pro Tip: If you only want to see apps that have a pending update, use:<\/p>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>winget list --upgrade-available<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Finding &#8220;Modern&#8221; Apps: <code>Get-AppxPackage<\/code><\/h3>\n\n\n\n<p>The registry method often skips built-in Windows apps like Calculator, Photos, or apps installed strictly through the Microsoft Store. To audit these specifically, use the AppX cmdlet:<\/p>\n\n\n\n<p>PowerShell<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Get-AppxPackage | Select-Object Name, PackageFullName | Sort-Object Name\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Comparison: Which Method Should You Use?<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Method<\/strong><\/td><td><strong>Best For&#8230;<\/strong><\/td><td><strong>Output Style<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong>Registry<\/strong><\/td><td>Professional Auditing<\/td><td>Very Detailed<\/td><\/tr><tr><td><strong>Winget<\/strong><\/td><td>Quick Human Reading<\/td><td>Clean Table<\/td><\/tr><tr><td><strong>Appx<\/strong><\/td><td>Windows Store Apps<\/td><td>System Names<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">A Quick Warning on <code>Win32_Product<\/code><\/h3>\n\n\n\n<p>If you search the web for this topic, you will often see scripts using <code>Get-WmiObject Win32_Product<\/code>. <strong>Avoid this command.<\/strong> It is incredibly slow and, due to its design, can actually trigger Windows to perform &#8220;consistency checks&#8221; or &#8220;repairs&#8221; on your software just by listing it. Stick to the Registry or Winget methods above for a safer, faster experience.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">How to Export Your List<\/h3>\n\n\n\n<p>If you want to save this list to a file to look at later (or move to a new computer), just add <code>| Out-File<\/code> to the end of your command:<\/p>\n\n\n\n<p>PowerShell<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Example: Exporting the registry list to a text file\nGet-ItemProperty HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* | \n    Select-Object DisplayName | Out-File \"$env:USERPROFILE\\Desktop\\MyApps.txt\"<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Note on Winget List: <\/h2>\n\n\n\n<p>he <code>winget list<\/code> command was officially introduced as part of the <strong>Windows Package Manager v1.0 stable release on May 26, 2021<\/strong>.<\/p>\n\n\n\n<p>While the <code>winget<\/code> tool itself was first announced in a preview state at Microsoft Build in May 2020, the specific ability to list <em>all<\/em> installed applications (even those not installed via winget) was one of the headline features of the 1.0 release a year later.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Key Milestones for <code>winget list<\/code>:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>May 2020:<\/strong> <code>winget<\/code> is first announced (v0.1). Early versions focused mainly on <code>install<\/code>, <code>search<\/code>, and <code>show<\/code>.<\/li>\n\n\n\n<li><strong>May 26, 2021:<\/strong> <strong>Version 1.0 is released.<\/strong> This version officially added the <code>list<\/code>, <code>upgrade<\/code>, <code>uninstall<\/code>, <code>import<\/code>, and <code>export<\/code> commands, making it a complete package manager.<\/li>\n\n\n\n<li><strong>September 2020 (Preview):<\/strong> Prior to the 1.0 release, experimental support for listing and installing Microsoft Store apps was added, which eventually matured into the <code>list<\/code> command we use today.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Why was it a big deal?<\/h3>\n\n\n\n<p>Before the <code>list<\/code> command, <code>winget<\/code> could only really see things it had installed itself. When <code>winget list<\/code> arrived in 1.0, it gained the ability to &#8220;see&#8221; almost everything in your Windows <strong>Add\/Remove Programs<\/strong> list, regardless of how it was installed. This turned <code>winget<\/code> from a simple downloader into a legitimate system audit tool.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Whether you are auditing a new workstation, cleaning up your own PC, or preparing for a fresh Windows install, you often need a complete list of what is actually installed. While the &#8220;Add or Remove Programs&#8221; menu is fine for casual use, PowerShell offers more power, more detail, and the ability to export your results&#8230;.<\/p>\n","protected":false},"author":2,"featured_media":461826,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","episode_type":"","audio_file":"","podmotor_file_id":"","podmotor_episode_id":"","cover_image":"","cover_image_id":"","duration":"","filesize":"","filesize_raw":"","date_recorded":"","explicit":"","block":"","itunes_episode_number":"","itunes_title":"","itunes_season_number":"","itunes_episode_type":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[681,441,446],"tags":[969,737,742,168],"class_list":["post-519686","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-moderneuc2","category-tech-talk","category-tips-tools-resources","tag-apps","tag-modern-device-management","tag-moderneuc1","tag-tools-tips"],"taxonomy_info":{"category":[{"value":681,"label":"ModernEUC"},{"value":441,"label":"Tech Talk"},{"value":446,"label":"Tips, Tools &amp; Resources"}],"post_tag":[{"value":969,"label":"Apps"},{"value":737,"label":"Modern Device Management"},{"value":742,"label":"ModernEUC"},{"value":168,"label":"Tools &amp; Tips"}]},"featured_image_src_large":["https:\/\/jorgep.com\/blog\/wp-content\/uploads\/jorgep-BlogPostGeneric.jpg",1024,512,false],"author_info":{"display_name":"Jorge Pereira","author_link":"https:\/\/jorgep.com\/blog\/author\/jorge\/"},"comment_info":0,"category_info":[{"term_id":681,"name":"ModernEUC","slug":"moderneuc2","term_group":0,"term_taxonomy_id":691,"taxonomy":"category","description":"","parent":0,"count":261,"filter":"raw","cat_ID":681,"category_count":261,"category_description":"","cat_name":"ModernEUC","category_nicename":"moderneuc2","category_parent":0},{"term_id":441,"name":"Tech Talk","slug":"tech-talk","term_group":0,"term_taxonomy_id":451,"taxonomy":"category","description":"","parent":0,"count":668,"filter":"raw","cat_ID":441,"category_count":668,"category_description":"","cat_name":"Tech Talk","category_nicename":"tech-talk","category_parent":0},{"term_id":446,"name":"Tips, Tools &amp; Resources","slug":"tips-tools-resources","term_group":0,"term_taxonomy_id":456,"taxonomy":"category","description":"","parent":0,"count":79,"filter":"raw","cat_ID":446,"category_count":79,"category_description":"","cat_name":"Tips, Tools &amp; Resources","category_nicename":"tips-tools-resources","category_parent":0}],"tag_info":[{"term_id":969,"name":"Apps","slug":"apps","term_group":0,"term_taxonomy_id":979,"taxonomy":"post_tag","description":"","parent":0,"count":2,"filter":"raw"},{"term_id":737,"name":"Modern Device Management","slug":"modern-device-management","term_group":0,"term_taxonomy_id":747,"taxonomy":"post_tag","description":"","parent":0,"count":23,"filter":"raw"},{"term_id":742,"name":"ModernEUC","slug":"moderneuc1","term_group":0,"term_taxonomy_id":752,"taxonomy":"post_tag","description":"","parent":0,"count":284,"filter":"raw"},{"term_id":168,"name":"Tools &amp; Tips","slug":"tools-tips","term_group":0,"term_taxonomy_id":180,"taxonomy":"post_tag","description":"","parent":0,"count":64,"filter":"raw"}],"_links":{"self":[{"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/posts\/519686","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/comments?post=519686"}],"version-history":[{"count":1,"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/posts\/519686\/revisions"}],"predecessor-version":[{"id":519687,"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/posts\/519686\/revisions\/519687"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/media\/461826"}],"wp:attachment":[{"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/media?parent=519686"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/categories?post=519686"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/tags?post=519686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}