Powershell 解析 system.array - netsh wlan show profiles

Powershell parsing system.array - netsh wlan show profiles

我正在尝试自动获取 WiFi 名称和密码。 我最大的问题是以 system.array 格式解析输出。因为我不能简单地通过它的键来访问值。我正在寻找一种方法来确保如果 运行 在不同的 PC 上解析不会中断。

> $all_profiles = netsh wlan show profile
> $all_profiles
Profiles on interface Wi-Fi:

Group policy profiles (read only)
---------------------------------
<None>

User profiles
-------------
All User Profile     : GRUBISIC
All User Profile     : HUAWEI
All User Profile     : A1
All User Profile     : Ma
All User Profile     : Ka
All User Profile     : Ou
All User Profile     : GK_Si
All User Profile     : 93
All User Profile     : 9B
All User Profile     : Li
All User Profile     : A
All User Profile     : NETI
All User Profile     : Re
All User Profile     : Chu

> $all_profiles.GetType()
IsPublic IsSerial Name                                     BaseType                                                                                                                                                                                                            
-------- -------- ----                                     --------                                                                                                                                                                                                            
True     True     Object[]                                 System.Array   

                                                                                                                                                                                                 

现在我想将其解析为配置文件名称列表,因此:[GRUBISIC、HUAWEI ...]

Output of netsh commands

下面对我有用,很可能有一个完整的 PowerShell cmdlet 可以替换它,但不确定是哪个 :)

$all_profiles | Select-String 'All User Profile' | ForEach-Object {
    $_ -replace '(?<=\S)\s+:\s+(?=\S)','=' | ConvertFrom-StringData
}

参考https://regex101.com/r/mOtSHS/1