tech.guitarrapc.cóm

C#, PowerShell, Unity, Cloud, Serverless Technical Update and Features

PowerShellでWifi Adaptorに紐づけられたSSIDを確認する

もはや 802.11 acの登場で、一般家庭や中小企業でよく使われているであろう 有線LAN "1G BASE/T" に 無線がスループットで迫ってきています。 このままacが成熟すればスループットで抜かれるわけで.... 無線も進化しました。 さて、そうなるとご自分のPCに登録されたSSIDは何なのか、把握したい時にする手段が欲しいですね? GUIでツールはあるだろう?そうですね、まぁPowerShellでも同じ要領なので、一つ参考にどうぞ。

ソース全文

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