一条PowerShell指令展示连接过的所有wifi名和密码

该条指令用以展示出所有连接过的保存在电脑上的WiFi ssid和密码。

(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[2].Value.Trim(); $_} | %{ [pscustomobject]@{ '名称'=$name;'密码'=$pass }}

使用效果如图所示:

6 个赞

这个可以的

……怎么有些微妙的即视感……


我这里不知道为什么会有截断的问题…
上面的名称和密码超过一定长度就会被省略成 ...

我 Window Terminal 正常,建议改用原版试试,我注意到你似乎用的是第三方 Terminal 或主题

你做到我没做到的一步,就是考虑到中英文的终端环境。

根据这里的答案,我解决了这个问题:

在你给的命令后添加:(二选一)

  • |Format-Table -Wrap -AutoSize
(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[2].Value.Trim(); $_} | %{ [pscustomobject]@{ '名称'=$name;'密码'=$pass }} | Format-Table -Wrap -AutoSize
  • | Out-GridView (转为GUI)
(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[2].Value.Trim(); $_} | %{ [pscustomobject]@{ '名称'=$name;'密码'=$pass }} | Out-GridView
1 个赞

我想要一条命令直出当前 Wifi 连接的密码,只出密码。然后适配中英系统,也就是 关键内容和 Key Content

我尝试以下写法,结果是关键内容整行。但我只想要 123456 这串密码

Netsh wlan show profile name=(Get-NetConnectionProfile -InterfaceAlias WLAN).Name key=clear | Select-String "关键内容\W+\:(.+?)"

输出

关键内容            : 123456