2010-07-12 8 views
6

Vorrei utilizzare Get-WmiObject Win32_NetworkAdapterConfiguration per restituire l'indirizzo IP di una scheda di rete. Sfortunatamente, non riesco a capire come formattare l'output per visualizzare solo l'indirizzo IPv.4.PowerShell: formato Get-WmiObject output per restituire solo l'indirizzo IP

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

Displays:

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

utilizzando l'uscita di cui sopra come un esempio, vorrei che per restituire solo 192.168.56.1 (Alcuni clienti hanno più NIC, da cui il "Where-Object")

risposta

7

la proprietà IPAddress è un string[], quindi il seguente dovrebbe farlo:

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

Quanto sopra funzionerà solo per indirizzi IPv4 che iniziano con "192.168. *". Se sostituisci l'ultima clausola Where con "{$ _ -notlike '*: *'}" ti verrà dato solo l'indirizzo IPv4. – fenster

+2

Avevo bisogno di usare '? {$ _ -non come" *: * "}'. –

1

Pensavo di condividere la mia variazione su quanto sopra, nel caso in cui aiuti qualcuno. Solo una riga:

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

Cheers.

0

(Get-WmiObject win32_Networkadapterconfiguration | Dove-Object {$ _. Ipaddress -notlike $ null}). IPaddress | Select-Object -First 1

Spero che questo possa essere d'aiuto!

+0

Potresti per favore elaborare più la tua risposta aggiungendo un po 'più di descrizione della soluzione che fornisci? – abarisone

3

Aggiunta di una risposta più veloce (evitando Where-Object e utilizzando -come il funzionamento in un elenco):

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

Spero che questo aiuti

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

Restituisce l'indirizzo IP della connessione di rete con predefinito gateway. Questo è esattamente ciò di cui hai bisogno nella maggior parte dei casi :)

Compatibile con Powershell 2.0 (Windows XP) e versioni successive.

Problemi correlati