PowerShellでシステム情報を取得(11)

前回の情報を踏まえて、ネットワーク情報の一括取得を行いましょう。ほしい情報はインターフェース、IPアドレス、サブネットマスク、デフォルトゲートウェイです。

$interface  =(($wifi[0]).IPv4Address).InterfaceAlias
$IPaddress  =(($wifi[0]).IPv4Address).IPAddress
$subnetmask =(($wifi[0]).IPv4Address).PrefixLength
$gateway    =(Get-NetIPConfiguration | Foreach IPv4DefaultGateway).NextHop

これでほしい情報が変数に入りましたので、あとは成形して出力するだけです。

echo "Interface,IPaddress,Subnetmask,Gateway" >> <ファイル名>
echo "$interface,IPaddress,$subnetmask,$gateway" >> <ファイル名>

DNSの情報を拾いたいときはちょっと工夫して

Get-NetIPConfiguration | Foreach DNSServer

で以下のように出力されます。

InterfaceAlias               Interface Address ServerAddresses                                                        PSComputerName
                             Index     Family
--------------               --------- ------- ---------------                                                        --------------
Wi-Fi                               15 IPv6    {}
Wi-Fi                               15 IPv4    {X.X.X.X, X.X.X.X}
イーサネット                        18 IPv6    {::::}
イーサネット                        18 IPv4    {}
Bluetooth ネットワーク接続          13 IPv6    {::::}
Bluetooth ネットワーク接続          13 IPv4    {}

ほしいのはWi-FiのDNSサーバーのIPv4のアドレスです。そのため、すべてのServerAddressesオブジェクトを抽出します。

(Get-NetIPConfiguration | Foreach DNSServer).ServerAddresses

これでIPアドレスだけ抽出できます。これを変数$dnsに放り込んでechoすると

$dns=(Get-NetIPConfiguration | Foreach DNSServer).ServerAddresses
echo $dns

以下の結果が得られます。

X.X.X.X
X.X.X.X
<IPv6address>
<IPv6address>
<IPv6address>
<IPv6address>
<IPv6address>
<IPv6address>

ほしいのは1行目と2行目のIPv4のアドレスです。$dnsの配列変数からその部分だけを拾い出すので

$dns[0],$dns[1]

で表示可能です。よってネットワーク情報を書き直すと

echo "Interface,IPaddress,Subnetmask,Gateway,DNS1,DNS2" >> <ファイル名>
echo "$interface,IPaddress,$subnetmask,$gateway,$dns[0],$dns[1]" >> <ファイル名>

コメントを残す

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