2010-07-12 6 views
6

Bir ağ kartının ip adresini döndürmek için Get-WmiObject Win32_NetworkAdapterConfiguration kullanmak istiyorum. Ne yazık ki, sadece IPv.4 adresini görüntülemek için çıktının nasıl biçimlendirileceğini anlayamıyorum.PowerShell: Biçim Get-WmiObject çıktısını yalnızca IP adresine döndürmek için

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

görüntüler:

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

örnek olarak yukarıdaki çıktıyı kullanarak, (bazı müşteriler, dolayısıyla "Nerede-Object" Birden NIC en var) sadece 192.168.56.1 dönmek

bunu istiyorum

cevap

7

IPAddress tesiste string[], bu nedenle şu yapmalı:

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

Yukarıdakiler yalnızca "192.168. *" Başlayarak IPv4 adresleri için çalışır. En son Where cümlesini "{$ _ -notlike '*: *'}" ile değiştirirseniz, size yalnızca IPv4 adresini verir. – fenster

+2

'? {$ _ -notlike "*: *"} '' ı kullanmam gerekiyordu. –

1

Düşünce Birisi yardımcı olması durumunda, yukarıdaki kendi varyasyonumu paylaşmak istiyorum. Sadece bir satır:

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

Şerefe.

0

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

Bunun yardımcı olacağını umarız! daha hızlı cevap (bir listede nerede-Nesne kaçınarak ve benzeri operasyonu kullanarak) ekleme

+0

Size verdiğiniz çözüm hakkında biraz daha fazla açıklama ekleyerek daha fazla cevabınızı hazırlayabilir misiniz? – abarisone

3

:

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

Umut bu

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

yardımcı olur varsayılan ağ bağlantısının IP adresini döndürür geçidi. Çoğu durumda gereksinim duyduğunuz şey tam olarak budur :)

Powershell 2.0 (Windows XP) ve daha yenisi ile uyumludur.