2010-07-12 61 views
6

我想使用Get-WmiObject Win32_NetworkAdapterConfiguration返回網卡的IP地址。不幸的是,我不知道如何格式化輸出以僅顯示IPv.4地址。PowerShell:將Get-WmiObject輸出格式化爲僅返回IP地址

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

顯示:

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

使用上述輸出作爲一個例子,我想它像只返回192.168.56.1(某些客戶端有多個網卡,因此「位置對象」)

回答

7

IPAddress屬性是string[],所以下面應該這樣做:

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

以上僅適用於以「192.168。*」開頭的IPv4地址。如果將最後一個Where子句替換爲「{$ _ -notlike'*:*'}」,那麼它只會給你IPv4地址。 – fenster 2010-07-12 21:31:32

+2

我需要使用'?{$ _ -notlike「*:*」}'。 – 2013-06-28 17:57:57

1

以爲我會在上面分享我自己的變體,以防它幫助某人。只需一行:

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

乾杯。

0

(Get-WmiObject win32_Networkadapterconfiguration | Where-Object {$ _。ipaddress -notlike $ null})。IP地址| Select-Object -First 1

希望這會有所幫助!

+0

您能否詳細說明您的答案,並添加關於您提供的解決方案的更多描述? – abarisone 2015-05-25 11:49:51

3

添加更快的答案(避免位置對象,並使用樣操作的列表):

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

希望這有助於

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

返回使用默認的網絡連接的IP地址網關。 這正是你在大多數情況下所需要的:)

與Powershell 2.0(Windows XP)及更新版本兼容。