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
}
我正在尝试自动获取 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
}