802.11 acの登場で、一般家庭や中小企業でよく使われているであろう有線LAN1G BASE/Tに無線がスループットで迫ってきています。
このままacが成熟すればスループットで抜かれる、無線も進化しました。
さて、そうなるとご自分のPCに登録されたSSIDは何なのか、把握したい時にする手段が欲しいですね? GUIでツールはあるのですが、PowerShellでも同じ要領なので参考にどうぞ。
概要
GitHubにソースをおいておきます。
guitarrapc/PowerShellUtil - Get-WifiSSID/Get-WifiSSID.ps1| GitHub
WindowsのWi-Fi情報は、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ファイルを取得
WifiGUID直下のファイルを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がいらないなら取得結果をFormt-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