我想用 PowerShell 直出当前连接的 WiFi 密码,适配中英文终端环境(中文是关键内容,英文是 Key Content )
比如我的 WiFi 密码是 12345678 ,就输出 12345678
我尝试过以下写法,但是输出的是关键内容整行。
请问这是否最优写法
Netsh wlan show profile name=(Get-NetConnectionProfile -InterfaceAlias WLAN).Name key=clear | Select-String "(关键内容|Key Content)\W+\:(.+?)"
1
ReVanTis 2022-01-11 18:43:57 +08:00
("Key Content : 12345678" -split ":")[1].Trim()
|
2
ReVanTis 2022-01-11 18:45:00 +08:00
其实有个小问题,密码里如果有冒号,这么简单的搞可能就不行了
|
3
Poto OP |
5
ReVanTis 2022-01-11 19:06:44 +08:00
@Poto
我也写 powershell 不多,随便写写你试试改改吧 echo "Key Content : 12345678" | select-string 'Key Content .*: (.*)').matches.groups[1].value |
6
Rheinmetal 2022-01-11 19:25:34 +08:00
|
7
ysc3839 2022-01-11 19:40:55 +08:00
一般不建议用正则来匹配,建议直接调底层接口。除非这个接口返回的就是很标准的文本,比如说 Linux 的 /proc/mtd ,返回的虽然是文本,但是格式是固定的。
|
8
ysc3839 2022-01-11 20:06:10 +08:00
去搜了一下,调 API 很简单,用 WlanGetProfile 就能获取到 https://www.codeproject.com/Articles/577445/Querying-Wireless-Settings-and-Decrypting-Wireless
主要麻烦是 PowerShell 调 Win32 API 需要自己写声明啥的,用 C++ 就没那么麻烦。 |