2015-10-07 73 views
0

我必須根據IP地址設置3個變量。使用正則表達式在PowerShell中指定IP地址

我發現我可以使用-regex開關,但我不知道如何檢查地址是否在兩個地址之間。

$ip = (get-WmiObject Win32_NetworkAdapterConfiguration|Where {$_.Ipaddress.length -gt 1}).ipaddress[0] 
switch -regex ($ip) 
{ 
    "address 192.168.0.1-192.168.0.255" { $val = 3; } 
    "address 192.168.1.1-192.168.1.100" { $val = 1; } 
    "address 192.168.1.101-192.168.1.200" { $val = 4; } 
    "address 192.168.1.201-192.168.1.255" { $val = 5; } 
    default { exit } 
} 

回答

2

我不認爲正則表達式是處理這種情況的最佳方式。我可能會做這樣的事

$ip = (get-WmiObject Win32_NetworkAdapterConfiguration|Where {$_.Ipaddress.length -gt 1}).ipaddress.split('.') 
switch ($ip) 
{ 
    {$ip[2] -eq 0} { $val = 3; } #match anything in 192.168.0.1-255 
    {$ip[3] -in 1..100} { $val = 1; } 
    {$ip[3] -in 101..200} { $val = 4; } 
    {$ip[3] -in 201..255} { $val = 5; } 
    default { exit } 
} 
$val 

如果您的IP塊是比在示例中提供不同的這純粹是調整開關條件匹配合適的八位字節的問題