2010-07-12 12 views
6

Me gustaría utilizar Get-WmiObject Win32_NetworkAdapterConfiguration para devolver la dirección IP de una tarjeta de red. Desafortunadamente, no puedo entender cómo formatear la salida para mostrar solo la dirección IPv.4.PowerShell: formatee la salida Get-WmiObject para devolver solo la dirección IP

Get-WmiObject Win32_NetworkAdapterConfiguration | Select IPAddress | Where-Object {$_.IPaddress -like "192.168*"} 

Muestra:

IPAddress 
--------- 
{192.168.56.1, fe80::8980:15f4:e2f4:aeca} 

Uso de la salida anterior como ejemplo, me gustaría que devolver sólo 192.168.56.1 (Algunos clientes tienen múltiples NIC, de ahí el "Where-Object")

Respuesta

7

la propiedad es un IPAddressstring[], por lo que el siguiente debería hacerlo:

gwmi Win32_NetworkAdapterConfiguration | 
    Where { $_.IPAddress } | # filter the objects where an address actually exists 
    Select -Expand IPAddress | # retrieve only the property *value* 
    Where { $_ -like '192.168.*' } 
+2

Lo anterior solo funcionaría para direcciones IPv4 que comiencen por "192.168. *". Si reemplaza la última cláusula Where con "{$ _ -notlike '*: *'}", le dará solo la dirección IPv4. – fenster

+2

Necesitaba usar '? {$ _ -notlike" *: * "}'. –

1

Pensé que compartiría mi propia variación sobre lo anterior, en caso de que ayude a alguien. Solo una línea:

Get-WmiObject win32_networkadapterconfiguration | where { $_.ipaddress -like "1*" } | select -ExpandProperty ipaddress | select -First 1 

Cheers.

0

(Get-WmiObject win32_Networkadapterconfiguration | Where-Object {$ _. Ipaddress -notlike $ null}). IPaddress | Seleccionar-Objeto -Primero 1

Espero que esto ayude!

+0

¿Podría por favor elaborar más su respuesta agregando un poco más de descripción sobre la solución que proporciona? – abarisone

3

Adición de una respuesta más rápida (evitando Where-Object y utilizando -como operación en una lista):

@(@(Get-WmiObject Win32_NetworkAdapterConfiguration | Select-Object -ExpandProperty IPAddress) -like "*.*")[0] 

espero que esto ayude

0
(Get-WmiObject Win32_NetworkAdapterConfiguration | where { (($_.IPEnabled -ne $null) -and ($_.DefaultIPGateway -ne $null)) } | select IPAddress -First 1).IPAddress[0] 

Devuelve la dirección IP de la conexión de red con un valor predeterminado puerta. Esto es exactamente lo que necesita en la mayoría de los casos :)

Compatible con Powershell 2.0 (Windows XP) y posterior.

Cuestiones relacionadas