2017-03-24 14 views
0

IP構成情報を検索して表示するスクリプトを作成しています。私は情報を得るために、変数を作成し、それを表示するために管理している:WMIを使用してIP情報を取得するために使用するネットワークインターフェイスを選択します。

$ip = (Get-WmiObject -Class win32_networkadapterconfiguration -Filter "index = '12'").IPAddress[0] 

$subnet = (Get-WmiObject -Class win32_networkadapterconfiguration -Filter "index = '12'").IPSubnet[0] 

$gateway = (Get-WmiObject -Class win32_networkadapterconfiguration -Filter "index = '12'").DefaultIPGateway 

$dns = (Get-WmiObject -Class win32_networkadapterconfiguration -Filter "index = '12'").DNSServerSearchOrder 

write-host 
write-host 

write-host "IP address is: $ip" 

write-host "Subnet Mask is: $subnet" 

write-host "Default Gateway is: $gateway" 

write-host "DNS is: $dns" 

私は私の場合のために番号が右のインターフェイスのための12であるインデックス番号でインタフェースをフィルタリングしています。私は、ネットワークインタフェースのリストをユーザにプロンプ​​トしたい。 Get-NetAdapterコマンドは、PowerShell v2で動作しないため使用しないでください。ユーザーは説明を含む現在のインターフェースを表示し、1つのnetowrkアダプター・インターフェースを選択できる必要があります。選択されたインタフェースは、変数$ interfaceに入れなければなりません。変数は、対応するアダプター索引番号を出力する必要があります。その後、私は通常、選択されたインターフェイスのIP情報を表示する必要があります-Filter "index = '$interfaceindexnumber'"のようなフィルタコマンドの変数を配置することができます。

インデックス番号がこの場合に適切な解決策ではないと思われる場合は、自由に別のフィルタを使用してください。 PowerShell v2で動作するコマンドを使用してください。

ありがとうございました!

答えて

0

あなたがやろうとしていることの説明に基づいて、後であなたやあなたのスクリプトに情報を提供するために使用されるインターフェイスをユーザーが選択できるようにするために、私はあなたのスクリプトを取り出し、 Out-GridViewに追加され、ユーザーに情報を提示するのに最適です。これらのコマンドはすべてPowerShell v2で動作するはずです。

私は、WMIクエリを1つだけ実行し、それを変数に格納することから始めました。次に、フィルタリングされた情報をOut-GridViewコマンドレットに渡して、ユーザーが選択したいインターフェイスを選択します。あまりにも多くの混乱を避けるために、ユーザーのDescription、IPAddress、およびIndexのみを表示することを選択しました。

ユーザーが選択すると、$ interfaceに割り当てられます。最初にwin32_networkadapterconfigurationから照会された完全な情報を抽出するために、私はユーザーセレクションのインデックス番号を使って$ AllNetInterfacesをフィルタリングしました。これはOut-GridViewにすべての情報を渡すだけで簡単にできますが、ユーザーに選択などをさせようと計画しているので、もう少し少なくなります。

最後に、「Write-Host」機能を使用せずにオブジェクトのプロパティを呼び出します。この時点で、それが機能していることを検証していて、後でそれをどうしたらよいかわからないからです。

$AllNetInterfaces = Get-WmiObject -Class win32_networkadapterconfiguration -Property * 

$Interface = $AllNetInterfaces | Select Description, IPAddress, Index | Out-GridView -Title "Available Network Adapters" -OutputMode Single 
$Interface = $AllNetInterfaces | ? {$_.Index -match $Interface.Index} 

$Interface.IPAddress[0] 
$Interface.IPSubnet[0] 
$Interface.DefaultIPGateway 
$Interface.DNSServerSearchOrder 

何をやろうとしていることは、あなたはこのように、再びアウトのGridViewコマンドレットを使用することができ、IPCONFIGを使用せず、ユーザーにIP情報を表示している場合:

$Interface | Select IPAddress, IPSubnet, DefaultIPGateway, DNSServerSearchOrder | Out-GridView -Title "IP Info for: $($Interface.Description)" 
+0

感謝デビッド。スクリプトは、アダプターのIP構成を表示します。グリッドビューは便利なツールで、簡単に選択できます。しかし、あなたが上記のように、あなたは私が後でそれをどうしたらいいか分からなかった。これがスクリプトの私の最初の一歩でした。情報を取得した後、私はそのインターフェースにそれを割り当てたいと思っていました。 'New-NetIPAddress'のような新しいコマンドを使うのはとても簡単ですが、Windows 7ではデフォルトでバージョン2があるので、サポートされていません。 PowerShellのバージョン2で静的IPを設定する方法を知っていますか? –

+0

win32_networkadapter設定で利用できるメソッドをチェックする必要があります。私は今は別の方法で私はもっと役に立つと思います。ここにmsdnへのリンクがありますhttps://msdn.microsoft.com/en-us/library/aa394217(v=vs.85).aspx – DavidH

+0

私の電話は私を切断しました。ここでは、スクリプトを使っている人のブログへのリンクを使って説明します。それが役に立つと願っています! https://blogs.technet.microsoft.com/heyscriptingguy/2012/02/28/use-powershell-to-configure-static-ip-and-dns-settings/ – DavidH

0
Get-WmiObject -Class win32_networkadapterconfiguration | Select Index, @{n="IP"; e={$_.ipaddress[0]}}, @{n="Subnet"; e={$_.IPSubnet[0]}}, Description | Format-Table -AutoSize 
[int]$ifindex = Read-Host "Select Network Adapter by Index Number" 

$adapters = Get-WmiObject -Class win32_networkadapterconfiguration -Filter "index = '$ifindex'" 

foreach ($adapter in $adapters){ 
$ip = $adapter.IPAddress[0] 
$subnet = $adapter.IPSubnet[0] 
$gateway = $adapter.DefaultIPGateway 
$dns = $adapter.DNSServerSearchOrder 
} 

$ip 
$subnet 
$gateway 
$dns 
関連する問題