もはや 802.11 acの登場で、一般家庭や中小企業でよく使われているであろう 有線LAN "1G BASE/T" に 無線がスループットで迫ってきています。
このままacが成熟すればスループットで抜かれるわけで.... 無線も進化しました。
さて、そうなるとご自分のPCに登録されたSSIDは何なのか、把握したい時にする手段が欲しいですね?
GUIでツールはあるだろう?そうですね、まぁPowerShellでも同じ要領なので、1つ参考にどうぞ。
ソース全文
GitHubでどうぞ。
https://github.com/guitarrapc/PowerShellUtil/blob/master/Get-WifiSSID/Get-WifiSSID.ps1
概要
Windowsのwifi情報は、SSID毎にXMLで補完されています。
そこで、ネットワークアダプターから与えられた名前でアダプタを検索、GUIDを調べます。
あとは、XMLは調べたGUIDいあるパス直下のフォルダ内部に存在するので取得してxmlをパースするだけです。
GUIDの取得
ここで、functionに渡された$WifiAdaptorNameをヒントにアダプタを探します。
何も指示しなければ wi-fi* と多くに機器で当てはまるであろう名前にしています。
が、もし指定があれば、どうぞ。
$WifiGUIDs = (Get-NetAdapter -Name $WifiAdaptorName).InterfaceGuid
WifiのGUIDからパスを取得
C:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces\ から、wifiに関するパスを取得します。
$InsterfacePath = "C:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces\"
foreach ($WifiGUID in $WifiGUIDs)
{
$WifiPath = Join-Path $InsterfacePath $WifiGUID
.....
SSIDファイルを取得
Wifi GUID直下のファイルをRecurseで取得します。
$WifiXmls = Get-ChildItem -Path $WifiPath -Recurse
カスタムオブジェクトにプロパティを入れる
出力用にカスタムオブジェクトに入れてしまします。
foreach ($wifixml in $WifiXmls)
{
[xml]$x = Get-Content -Path $wifixml.FullName
[PSCustomObject]@{
FileName = $WifiXml.FullName
WifiName = $x.WLANProfile.Name
ConnectionMode = $x.WLANProfile.ConnectionMode
SSIDName = $x.WLANProfile.SSIDConfig.SSID.Name
SSIDHex = $x.WLANProfile.SSIDConfig.SSID.Hex
}
}
出力サンプル
filenameがいらないなら取得結果を format-tableするのもいいかもです。
FileName : C:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx}\{xxxxxxxxxxxxxx-xxxx-xxxx-xxxxxxxxx}.xml
WifiName : SSIDName
ConnectionMode : auto
SSIDName : SSIDName
SSIDHex : xxxxxxxxxxxxxxxxxxxxxxxxxx