Skip to content

Instantly share code, notes, and snippets.

@CybersamuraiDK
Forked from willjobs/wifi-passwords.ps1
Last active January 25, 2025 21:34
Show Gist options
  • Save CybersamuraiDK/6e0be5c0c47165228895079efa8d98ec to your computer and use it in GitHub Desktop.
Save CybersamuraiDK/6e0be5c0c47165228895079efa8d98ec to your computer and use it in GitHub Desktop.
PowerShell script to show all wifi passwords saved in Windows
(netsh wlan show profiles) | Select-String "\:(.+)$" | %{$name=$_.Matches.Groups[1].Value.Trim(); ($details=netsh wlan show profile name="$name" key=clear) -and ($pass=($details | Select-String "Key Content\W+\:(.+)$").Matches.Groups[1].Value.Trim() -or "N/A"); [PSCustomObject]@{PROFILE_NAME=$name;PASSWORD=$pass}} | Format-Table -AutoSize
@dnsati
Copy link

dnsati commented Jul 21, 2023

Thanks for the one liner. Does wotk on W10.

@ps81frt
Copy link

ps81frt commented Feb 16, 2024

no work W11

@Mrcodermann
Copy link

it works on my W11

@MSIDoc
Copy link

MSIDoc commented May 9, 2024

no work W11
Select-String "Schlüsselinhalt\W+\:(.+)$" ...
change for the German version “Key Content” into “Schlüsselinhalt” this script will also work

@machavanne
Copy link

For windows in French :
Replace the English string : “Key Content\W+:(.+)$”
by the string : “Contenu de la clé\W+:(.+)$”

@BenSkecher
Copy link

BenSkecher commented Aug 30, 2024

Hey. Thanks for the code.
I was working on a project that requires me to create a small gui.
My powershell is rusty.
My main question is: how to access the individual elements of the output.
That is, the Profile_Names and Passwords individually, for the gui?
It would also be nice to use variables.
Thanks in advance.

@mmcei12
Copy link

mmcei12 commented Nov 20, 2024

does not work there is an error
Select-StringKey Content\W+:(.+)$: The module 'Select-StringKey Content' could not be loaded. For more information, run 'Import-Module Select-StringKey Content'.

@ps81frt
Copy link

ps81frt commented Nov 20, 2024

Try thats

PART 1 : Networking

Get All Stored Wifi-Passwords

1 . Get current basic network Information.

Get-NetIPConfiguration

if that doesnt work !

(netsh wlan show profiles) -match "All User Profile\s*: (.*)" | %{(netsh wlan show profile $_.trim() key=clear)} | Select-String "Key Content" | ForEach-Object {$_ -replace "Key Content\s*: ", ""}

To Display only Keys :

(netsh wlan show profile name=wifi-name key=clear) | Select-String "Key Content" | ForEach-Object { $_.ToString().Split(":")[1].Trim() }

Display only Wifi-Keys

IF IT DOES NOT WORK TRY THESE SIMPLE COMMAND ( Everyone Knows :)

netsh wlan show profile Name=* Key=clear

GET ALL PROFILE NAMES WITH PASSWORDS .

(netsh wlan show profiles) | Select-String "\:(.+)$" | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name="$name" key=clear)} | Select-String "Key Content\W+\:(.+)$" | %{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | %{[PSCustomObject]@{ PROFILE_NAME=$name;PASSWORD=$pass }} | Format-Table –AutoSize | Out-String -OutVariable dataCaptured

@ps81frt
Copy link

ps81frt commented Nov 20, 2024

PART 1 : Networking

Get All Stored Wifi-Passwords

1 . Get current basic network Information.

Get-NetIPConfiguration

if that doesnt work !

(netsh wlan show profiles) -match "All User Profile\s*: (.*)" | %{(netsh wlan show profile $_.trim() key=clear)} | Select-String "Key Content" | ForEach-Object {$_ -replace "Key Content\s*: ", ""}

To Display only Keys :

(netsh wlan show profile name=wifi-name key=clear) | Select-String "Key Content" | ForEach-Object { $_.ToString().Split(":")[1].Trim() }

Display only Wifi-Keys

IF IT DOES NOT WORK TRY THESE SIMPLE COMMAND ( Everyone Knows :)

netsh wlan show profile Name=* Key=clear

GET ALL PROFILE NAMES WITH PASSWORDS .

(netsh wlan show profiles) | Select-String "\:(.+)$" | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name="$name" key=clear)} | Select-String "Key Content\W+\:(.+)$" | %{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | %{[PSCustomObject]@{ PROFILE_NAME=$name;PASSWORD=$pass }} | Format-Table –AutoSize | Out-String -OutVariable dataCaptured

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment