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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です