簡體   English   中英

Get-WmiObject Win32_NetworkAdapterConfiguration-匹配失敗

[英]Get-WmiObject Win32_NetworkAdapterConfiguration -Match failing

所以我用這個:

$IPA = (Get-NetIPAddress | Where-Object InterfaceAlias -eq "MyPortName").IPv4Address

然后我要使用以下內容來獲取該IP的子網掩碼:

$IPInfo = (Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object IPAddress -Match $IPA)

其次是:

$SubMask = $IPInfo.IPSubnet[0]

但這失敗,因為$ IPInfo為空白。 如果我對IPAddress進行硬編碼,則可以使用:

$IPInfo = (Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object IPAddress -Match 10.45.22.100)

但是端口IP將始終不同。 為什么不將$ IPA作為匹配參數?

編輯:被報告的IP地址同時具有IPv4和IPv6,這就是為什么我試圖對IPv4進行匹配。

正如我們在注釋中發現的那樣,您將為$IPA返回一個數組。 在PowerShell中,控制台將其展開以顯示所有元素,因此在控制台中看起來還不錯。 由於只有一個,因此具有誤導性。

((Get-NetIPAddress | Where-Object InterfaceAlias -eq "Local Area Connection").IPv4Address).gettype().fullname
System.Object[]

可能是它試圖匹配“ System.Object []”,這就是為什么您沒有獲得所需結果的原因。

解決這個問題的幾種方法。 一個簡單的方法是始終在查詢中返回-First結果。

(Get-NetIPAddress | Where-Object InterfaceAlias -eq "Local Area Connection").IPv4Address | select -first 1).gettype().fullname

因此,只需使用| select -first 1 | select -first 1 ,您應該得到期望的結果。


我在這里警告使用-match 了解-match-replace支持正則表達式模式字符串。 因此,如果字符串中包含正則表達式元字符,則可能會得到意外的結果。

發生這種情況是因為$ IPA實際上是一個對象數組。 當您運行Get-NetIPAddress | Where-Object InterfaceAlias -eq "MyPortName" Get-NetIPAddress | Where-Object InterfaceAlias -eq "MyPortName"返回一個類型為MSFT_NetIPAddress的CIM實例的數組。 當您通過運行$IPA = (Get-NetIPAddress | Where-Object InterfaceAlias -eq "MyPortName").IPv4Address請求IPv4Address成員時$IPA = (Get-NetIPAddress | Where-Object InterfaceAlias -eq "MyPortName").IPv4Address陣列仍然存在,但是未顯示沒有IPv4Address的陣列元素。 看下面的例子。

$NetIPAddresses = (Get-NetIPAddress | where {$_.InterfaceAlias -eq "Ethernet" -and $_.AddressFamily -eq "IPv4"})
foreach ($NetIPAddress in $NetIPAddresses) {
   $IPA = $NetIPAddress.IPv4Address
   $IPInfo = (Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object IPAddress -Match $IPA)
   $IPInfo.IPSubnet[0]
}

這將顯示給定接口上每個IPv4地址的子網掩碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM