我正在嘗試通過WMI
進一步查詢服務器列表。不幸的是,如果腳本遇到無法通過WMI
連接的服務器,則需要很長時間才能超時。Powershell:按IP地址的第二個八位字節過濾服務器列表
這些通常是我們DMZ中的服務器,並在IP地址的第二個字節中分配了一個特定的地址,例如.92
。所以我期待將這些服務器作爲我查詢中的第一步來篩選出來,因此可以在任何進一步的WMI
查詢中忽略它。
我發現了很多關於如何做到這一點的例子,再次,我不能使用WMI
方法,因爲這會使對象失效(例如:Get-WmiObject Win32_NetworkAdapterConfiguration
)。
在下面的示例中,服務器「SERVER」的IP爲192.9.4.1
,我想在第二個八位字節中過濾掉所有帶「.9」的服務器。所以我使用了一個簡單的Test-Connection
cmdlet,目的是分割結果。之前,我可以把它分解,在Test-Connection
的結果是:
$IP4Address = Test-Connection _Computer SERVER -Count 1 | Select IPV4Address
@{IPV4Address=192.9.4.1}
這意味着我需要數從一開始19個字符,讓我的「9」。 IPV4Address
$Octet = $IP4Address -split ("")
If ($Octet[19] -eq '9')
{write-host "In DMZ"}
Else
{write-host "Not in DMZ"}
你問之前,我曾嘗試-split (".")
但是這似乎並沒有採取任何影響。
那麼爲什麼結果會出現像@{IPV4Address=192.9.4.1}
?有更好的解決方案嗎?
使用'-split「\」','不-split」 .'' –
所有問題的答案,目前缺少這我相信OP中仍然有一個問題,這個問題的另一部分。 '@ {IPV4Address = 192.9.4.1}? ' – Matt
@Matt你說得對,我爲此添加了一個解釋。 –