选择用于使用WMI获取IP信息的网络接口

时间:2017-03-24 17:49:56

标签: powershell

我正在创建一个查找并显示IP配置信息的脚本。我已设法创建变量以获取信息并显示它:

raise ValueError("Unknown MS Compiler version %s " % msc_ver)
ValueError: Unknown MS Compiler version 1900

我正在按索引号过滤接口,对于我的情况,对于正确的接口,数字为12。我想用一个网络接口列表提示用户。不应使用$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" 命令,因为它不适用于PowerShell v2。用户必须能够查看当前界面,包括描述,并能够选择一个netowrk适配器界面。必须将所选接口放入变量,即$ interface。变量必须输出相应的适配器索引号。之后,我可以将变量放在过滤器命令中,如:Get-NetAdapter,它通常应显示所选接口的IP信息。

如果您认为索引编号不是此案例的正确解决方案,请随意使用其他过滤器。请确保使用与PowerShell v2一起使用的命令。

谢谢!

2 个答案:

答案 0 :(得分:0)

根据您要执行的操作的说明,即允许用户选择稍后用于向您或您的脚本提供信息的界面,我使用了您的脚本并将其擦洗了一下在Out-GridView中添加,非常适合向用户呈现信息。所有这些命令都应该在PowerShell v2中使用。

我开始只做一个WMI查询并将其存储在变量中。然后,我将过滤后的信息传递给Out-GridView cmdlet,供用户选择他们想要或需要选择的接口。我选择只显示用户说明,IP地址和索引以防止太多混淆。

用户进行选择后,将其分配给$ 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

如果你要做的是在不使用ipconfig的情况下向用户显示IP信息,那么你可以再次使用Out-GridView cmdlet,如下所示:

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

答案 1 :(得分: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
相关问题