#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"
}