2013-07-14 2 views
1

В следующем коде $ ipAddress хранит IPV4 и IPV6. Я только хочу, чтобы IPV4 отображался, все равно это можно сделать? Может быть, с расколом?Display NIC Info

Кроме того, маска подсети печатает 255.255.255.0 64 - откуда этот изгоев 64?

Код:

ForEach($NIC in $env:computername) { 
    $intIndex = 1 
    $NICInfo = Get-WmiObject -ComputerName $env:computername Win32_NetworkAdapterConfiguration | Where-Object {$_.IPAddress -ne $null} 
    $caption = $NICInfo.Description 
    $ipAddress = $NICInfo.IPAddress 
    $ipSubnet = $NICInfo.IpSubnet 
    $ipGateWay = $NICInfo.DefaultIPGateway 
    $macAddress = $NICInfo.MACAddress 
    Write-Host "Interface Name: $caption" 
    Write-Host "IP Addresses: $ipAddress" 
    Write-Host "Subnet Mask: $ipSubnet" 
    Write-Host "Default Gateway: $ipGateway" 
    Write-Host "MAC: $macAddress" 
    $intIndex += 1 
} 

ответ

3

Subnets работают по-разному для IPv6, поэтому изгоев 64 вы видите, это маска подсети IPv6 - а не IPv4-х.

Длина префикса в IPv6 является эквивалентом маски подсети в IPv4. Однако, вместо того, чтобы быть выраженным в 4 октетах, как в IPv4, он выражается как целое число между 1-128. Например: 2001: db8: ABCD: 0012 :: 0/64

Смотрите здесь: http://publib.boulder.ibm.com/infocenter/ts3500tl/v1r0/index.jsp?topic=%2Fcom.ibm.storage.ts3500.doc%2Fopg_3584_IPv4_IPv6_prefix_subnet_mask.html

Для того, чтобы удалить его, вы можете попробовать следующее (массивное предположение сделал, что IPv4 всегда приходит первым, но во всех моих экспериментах он еще не занял второе место;))

ForEach($NIC in $env:computername) { 
    $intIndex = 1 
    $NICInfo = Get-WmiObject -ComputerName $env:computername Win32_NetworkAdapterConfiguration | Where-Object {$_.IPAddress -ne $null} 
    $caption = $NICInfo.Description 
    #Only interested in the first IP Address - the IPv4 Address 
    $ipAddress = $NICInfo.IPAddress[0] 
    #Only interested in the first IP Subnet - the IPv4 Subnet  
    $ipSubnet = $NICInfo.IpSubnet[0] 
    $ipGateWay = $NICInfo.DefaultIPGateway 
    $macAddress = $NICInfo.MACAddress 
    Write-Host "Interface Name: $caption" 
    Write-Host "IP Addresses: $ipAddress" 
    Write-Host "Subnet Mask: $ipSubnet" 
    Write-Host "Default Gateway: $ipGateway" 
    Write-Host "MAC: $macAddress" 
    $intIndex += 1 
} 

Надеюсь, это поможет!