CALL (239) 961-8285
ENDURTECH
  • Web Services
    • Web Design
      • Design and Development
      • Web Consulting and Tutoring
      • Hosting and Maintenance
      • Project Portfolio
    • Media
      • Photo and Audio, Video Editing
      • Social Media Management
      • All Web Related Services
    • Marketing
      • Digital Marketing and Branding
      • Search Engine Optimization
    • Client Portal
      • Remote Web Support
      • Web Services Payment
      • Scheduled Payments
  • Tech Support
    • Services
      • Computer Support and Repair
      • Data Backup and Recovery
      • Computer Security, Virus Removal
      • Computer Networking Support
      • Computer Consulting & Tutoring
      • All Technology Related Services
    • Blockchain
      • Blockchain Technology
      • Cryptocurrency Articles
    • Client Portal
      • Remote PC Support
      • Remote Monitoring & Management
      • Tech Services Payment
  • Articles
  • About
  • Talk to Me
  • Menu Menu

How to List Installed Software on Windows 11

Computer Security, Microsoft, Privacy, Security, Technology Support, Windows

The following creates a CSV file of all installed software on an endpoint.

File type: .ps1
Run as: Current User
Max run time: 10 minutes
Variables: No

 

Generate Software List, PowerShell Script

## Specify output file to write data to
$FILE = “${Env:UserProfile}\Desktop\InstalledSoftware.csv”

## Clear content of output file
If ( Test-Path $FILE ) { Clear-Content -Path $FILE -Force }

## Function to append a line to a file
Function Write-LineToFile {
param([Parameter(Mandatory=$true)][string]$Path,[Parameter(Mandatory=$true)][string]$Line)
If ( -not (Test-Path $Path) ) {
Write-Output “Creating file “”${Path}”””
Try { New-Item -Path $Path -ItemType File -Force | Out-Null }
Catch { Write-Error $_.Exception.Message }
}
Try { Add-Content -Path $Path -Value $Line }
Catch { Write-Error $_.Exception.Message }
}

## Function to test whether or not an item has a specified property
Function Test-ItemProperty {
param([Parameter(Mandatory=$true)][string]$Path,[Parameter(Mandatory=$true)][string]$Name)
Try {
$test = Get-ItemProperty -Path $Path -Name $Name -ErrorAction SilentlyContinue
If (($test -eq $null) -or ($test.Length -eq 0)) { Return $false } Else { Return $true }
}
Catch { Return $false }
}

## Function to retrieve an item property
Function Get-ItemPropertyInfo {
param([Parameter(Mandatory=$true)][string]$Path,[Parameter(Mandatory=$true)][string]$Name)
If ( Test-ItemProperty -Path $Path -Name $Name ) {
$retval = Get-ItemPropertyValue -Path $Path -Name $Name
$retval = $retval -replace “,”, ” ”

## Additional processing for specific properties
Switch ( $Name ) {

## Convert the estimated size into MB
“EstimatedSize” {
$size = [int]$retval
$size = [Math]::Ceiling($size / 1024)
$retval = [string]$size
}

## Convert the date format into YYYY-MM-DD
“InstallDate” {

$origRetval = $retval

## Try to find each type of date string so we can convert it
Switch -Regex ( $retval ) {
‘^\d{8}$’ { $formatstring = ‘yyyyMMdd’ }
‘^\d{1,2}\\\d{1,2}\\\d{4}$’ { $formatstring = ‘MM\dd\yyyy’ }
‘^\d{4}\\\d{1,2}\\\d{1,2}$’ { $formatstring = ‘yyyy\MM\dd’ }
Default { $formatstring = $null }
}

## Make sure $formatstring has a value, if not just try to cast directly to a datetime
Try {
If ( $formatstring -eq $null ) {
$date = [datetime]$retval
} Else {
$date = [datetime]::ParseExact($retval,$formatstring,$null)
}

## Set $retval to a standard datetime format
$retval = $date.ToString(‘yyyy-MM-dd’)
}
Catch { Write-Error $_.Exception.Message; $retval = $origRetval }
}
Default {}
}
}
Else { $retval = “” }

Return $retval
}

## Write the headers to the output file
Write-LineToFile -Path $FILE -Line “Name,Publisher,Version,InstallDate,EstimatedSize(MB),UninstallString,ModifyPath”

## Iterate through all Registry Uninstall keys and build the CSV file of all installed software
ForEach ( $item in $(Get-ChildItem -Path ‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall’,’HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall’) ) {
$DisplayName = Get-ItemPropertyInfo -Path $item.PSPath -Name DisplayName
$DisplayVersion = Get-ItemPropertyInfo -Path $item.PSPath -Name DisplayVersion
$EstimatedSize = Get-ItemPropertyInfo -Path $item.PSPath -Name EstimatedSize
$InstallDate = Get-ItemPropertyInfo -Path $item.PSPath -Name InstallDate
$Publisher = Get-ItemPropertyInfo -Path $item.PSPath -Name Publisher
$UninstallString = Get-ItemPropertyInfo -Path $item.PSPath -Name UninstallString
$ModifyPath = Get-ItemPropertyInfo -Path $item.PSPath -Name ModifyPath

## Write installed software to output file only if it has a name and uninstall/modify path, otherwise discard
If ( -not (($DisplayName -eq “”) -and ($UninstallString -eq “”) -and ($ModifyPath -eq “”)) ) {
$content = “${DisplayName},${Publisher},${DisplayVersion},${InstallDate},${EstimatedSize},${UninstallString},${ModifyPath}”
Write-LineToFile -Path $FILE -Line $content
}
}

 

Conclusion

I welcome your thoughts, questions or suggestions on my article on how to list all installed software on Windows 11.

You may support my work by sending me a tip using your Brave browser or by sending me a one time donation using your credit card.

Let me know if you found any errors within my article or if I may further assist you by answering any additional questions you may have.

 

July 25, 2025
Share this entry
  • Share on Facebook
  • Share on X
  • Share on WhatsApp
  • Share on LinkedIn
  • Share on Reddit
  • Share by Mail
https://endurtech.com/wp-content/uploads/2018/04/windows.jpg 512 512 Manny https://endurtech.com/wp-content/uploads/2018/04/endurtech-logo.png Manny2025-07-25 15:22:352026-05-06 13:23:34How to List Installed Software on Windows 11
Search Search

CONNECT WITH US

This field is for validation purposes and should be left unchanged.
Engagement*

Want to say, "thanks"?
Leave me a review on Facebook and/or Google.

You can send me a tip using your Brave browser. Get Brave!

Only used to send you a receipt.
Include a Message
Popular
  • Windows Logo
    Second Monitor on Windows 10 Resets After SleepJuly 2, 2020 - 6:30 am
  • Windows Logo
    How to Disable the F1 Help Key in Windows 10April 15, 2021 - 2:40 pm
  • Cortana Logo
    How to Disable Microsoft’s CortanaApril 6, 2021 - 9:00 am
  • Firefox Logo
    How to Remove All Passwords from Lockwise in FirefoxMarch 26, 2020 - 11:00 am
Recent
  • How to block Facebook crawler
    List of Spider Crawlers to BlockOctober 13, 2026 - 8:50 am
  • How to Fix Brother BrLog Errors
    How to Fix Brother BrLog ErrorsAugust 24, 2026 - 10:55 am
  • Brave Browser Logo
    How to Fix the “Not Secure” Address Bar Err...July 20, 2026 - 12:48 pm
  • Linkpull Extension By Endurtech
    LinkPull Extension, Grab Any File From a URLJuly 7, 2026 - 7:35 pm

STAY IN TOUCH

ENDURTECH Web Design Company Naples, Florida

Endurtech GitHub ProfileEndurtech YouTube ChannelEndurtech LinkedIn ProfileEndurtech Facebook Page

5 Star Google Review for Endurtech - Naples Web Design Company

Learn More & Connect

Search Search
ENDURTECH Logo
Endurtech GitHub ProfileEndurtech YouTube ChannelEndurtech LinkedIn ProfileEndurtech Facebook Page

5 Star Google Review for Endurtech - Naples Web Design Company

Latest Articles

  • How to block Facebook crawler
    List of Spider Crawlers to BlockOctober 13, 2026 - 8:50 am
  • How to Fix Brother BrLog Errors
    How to Fix Brother BrLog ErrorsAugust 24, 2026 - 10:55 am
  • Brave Browser Logo
    How to Fix the “Not Secure” Address Bar ErrorJuly 20, 2026 - 12:48 pm
  • Linkpull Extension By Endurtech
    LinkPull Extension, Grab Any File From a URLJuly 7, 2026 - 7:35 pm

Recent Projects

  • Jewelry Website Gems of Note
    Gems of NoteNovember 15, 2019 - 10:16 pm
  • Gift Store Facebook Business Page Cover Video
    Gift Store Facebook Business Page Cover VideoApril 13, 2019 - 3:58 pm
  • Toledo Yoga BrandBot Footer Integration
    Toledo YogaApril 9, 2019 - 7:26 am
  • Lawyer Association Website with Member Portal
    National Employment Lawyers Association, Florida ChapterFebruary 26, 2019 - 8:00 am

Business Details

Mondays - Fridays
9:00 am - 5:00 pm
Eastern Standard Time
After hours by appointment

SUPPORT PHONE

(239) 961-8285

MAILING ADDRESS

59 Logan Ln.
Lynchburg, VA 24502

Copyright © 2026 ENDURTECH ® All Rights Reserved. Legal
Link to: Replace WordPress admin bar welcome text, “Howdy” Link to: Replace WordPress admin bar welcome text, “Howdy” Replace WordPress admin bar welcome text, “Howdy”WordPress Content Management System Icon Link to: Disable WordPress Plugin Update Notices Link to: Disable WordPress Plugin Update Notices WordPress Content Management System IconDisable WordPress Plugin Update Notices
Scroll to top Scroll to top Scroll to top