Сценарий Powershell | Поиск совпадений из первых двух октетов

#powershell #conditional-statements

#powershell #условные операторы

Вопрос:

У меня есть скрипт, который получает активный IP-адрес с компьютера, на котором он запущен. Если первые два октета содержат это число, он выведет сообщение «Я в PH».

Итак, если адрес равен 10.4.20.52, мне нужно создать решение, в котором, если IP-адрес содержит » «10.4», напишите «Я в PH», иначе «я не в PH».

Я пытался использовать -Like -iLike и -contains, но ни один из них, похоже, не работает.

 $NICIndex = Get-CimInstance -ClassName Win32_IP4RouteTable |
    Where-Object { $_.Destination -eq "0.0.0.0"-and $_.Mask -eq "0.0.0.0" } |
    Sort-Object Metric1 |
    Select-Object -First 1 |
    Select-Object -ExpandProperty InterfaceIndex
$AdapterConfig = Get-CimInstance -ClassName Win32_NetworkAdapter |
    Where-Object { $_.InterfaceIndex -eq $NICIndex } |
    Get-CimAssociatedInstance -ResultClassName Win32_NetworkAdapterConfiguration
$ipconfig = (Get-First $AdapterConfig.IPAddress);


$ipconfig


if ($ipconfig -contains '10.4.')
{
  Write-host "I'm in PH"  
}
else
{
  Write-host "I'm not in PH"
}
 

Есть идеи?

Комментарии:

1. Я думаю, что я только что понял это, я использовал -Match, и это сработало. думаю, это не имеет значения

2. -contains используется для проверки того, содержит ли массив элемент. Он не соответствует подстроке.

3. @TheInfamousOne Если вы нашли ответ на свой собственный вопрос, опубликуйте его в качестве ответа, чтобы другие пользователи с тем же вопросом могли четко видеть ответ.

Ответ №1:

 if ($ipconfig -like '10.4.*')  # or if ($ipconfig -match '^10.4.')
{
  Write-host "I'm in PH"  
}
else
{
  Write-host "I'm not in PH"
}