PowerShellでシステム情報を取得(10)
お待ちかねのネットワーク情報の取得方法です。PowerShellでシステム情報を取得(5)で使ったコマンド
Get-NetIPConfiguration | Select-Object InterfaceAlias,InterfaceDescription,IPv4Address
の結果は以下のようになりました。
InterfaceAlias InterfaceDescription IPv4Address
-------------- -------------------- -----------
Wi-Fi Intel(R) Dual Band Wireless-AC 3168 {X.X.X.X}
Bluetooth ネットワーク接続 Bluetooth Device (Personal Area Network) {169.254.X.X}
イーサネット Realtek PCIe GbE Family Controller {169.254.X.X}
これだといろいろな情報があってそれはそれでいいのかもしれませんが、情報量が多くてもっと絞り込みたいです。ということで、
Get-NetIPConfiguration | Select-Object InterfaceAlias,InterfaceDescription,IPv4Address | Select-String Wi-Fi
とすると
@{InterfaceAlias=Wi-Fi; InterfaceDescription=Qualcomm QCA61x4A 802.11ac Wireless Adapter; IPv4Address=Microsoft.Managem
ent.Infrastructure.CimInstance[]}
のような感じで出力されます。@{ }で囲まれているものは連想配列といわれるもので、考え方は難しいのでここでは割愛します。
私が勉強不足だからなのかPowerShellの連想配列の値の取り方ではうまくいかなかったので、まず変数$wifiにこのコマンドの結果を入力します。
$wifi=Get-NetIPConfiguration | Select-Object InterfaceAlias,InterfaceDescription,IPv4Address
次に
$wifi[0]
で連想配列の最初の値を表示すると
InterfaceAlias InterfaceDescription IPv4Address
-------------- -------------------- -----------
Wi-Fi Qualcomm QCA61x4A 802.11ac Wireless Adapter {X.X.X.X}
となるから、IPv4Addressの値だけ取得したければ、
($wifi[0]).IPv4Address
とすればいいのかなと思っていたのですが、出力結果は期待通りの結果ではなく以下のようになりました。
IPAddress : X.X.X.X
InterfaceIndex : 15
InterfaceAlias : Wi-Fi
AddressFamily : IPv4
Type : Unicast
PrefixLength : 24
PrefixOrigin : Dhcp
SuffixOrigin : Dhcp
AddressState : Preferred
ValidLifetime : 21:55:27
PreferredLifetime : 21:55:27
SkipAsSource : False
PolicyStore : ActiveStore
PSComputerName :
そこで、この結果からIPAddressだけを取得するのであれば
(($wifi[0]).IPv4Address).IPAddress
とすれば晴れてIPAddressのみ取得することができました。
X.X.X.X