2017-02-15 2 views
0

Итак, я пытаюсь написать сценарий, который задает DNS-пересылку двум предустановленным IP-адресам, но если пользователь хочет выбрать другие IP-адреса, ему просто нужно дать их в подсказке. не кажетсяПростой синтаксис Powershell, если условие не работает

Write-Host " " 
Write-Host "DNS Forwarders are set on -192.168.20.3 & 168.192.24.3- want to choose these?" 

$Antw = Read-Host -Prompt 'y/n' 

If ($Antw.ToLower() = "n") 
{ 
    $ip1 = Read-Host -Prompt 'DNS Forwarder 1: ' 
    $ip2 = Read-Host -Prompt 'DNS Forwarder 2: ' 

    C:\Windows\System32\dnscmd.exe $hostname /resetforwarders $ip1, $ip2 
} 


     Elseif ($Antw.ToLower() = "y") 
     { 

      C:\Windows\System32\dnscmd.exe $hostname /resetforwarders 192.168.20.3, 168.192.24.3 

     } 


#Write-Host $Antw 

Мой If/ElseIf работать, однако, если я нажимаю «у», она по-прежнему требует для 2-х ф ?? что случилось с моим кодом?

Благодаря

ответ

2

Это распространенная ошибка среди тех, кто не вполне комфортно с помощью PowerShell. Сравнение в PowerShell не выполняется с классическими символами оператора; вы должны использовать "FORTRAN стиле" операторы:

Write-Host " " 
Write-Host "DNS Forwarders are set on -192.168.20.3 & 168.192.24.3- want to choose these?" 

$Antw = Read-Host -Prompt 'y/n' 

If ($Antw.ToLower() -eq "n") 
{ 
    $ip1 = Read-Host -Prompt 'DNS Forwarder 1: ' 
    $ip2 = Read-Host -Prompt 'DNS Forwarder 2: ' 

    C:\Windows\System32\dnscmd.exe $hostname /resetforwarders $ip1, $ip2 
} 


     Elseif ($Antw.ToLower() -eq "y") 
     { 

      C:\Windows\System32\dnscmd.exe $hostname /resetforwarders 192.168.20.3, 168.192.24.3 

     } 


#Write-Host $Antw 
+0

Большое спасибо Джеффу !! Я не знал, что -eq использовался в качестве метода сравнения в PowerShell. –

+1

@KahnKah. Вы обнаружите, что собственные файлы справки PowerShell весьма полезны - на повышенном сеансе Powershell выполните команду «Обновить-Справка», а затем в любом сеансе Powershell выполните «Get-Help about_Comparison_Operators'. 'Get-Help' является одним из самых полезных доступных командлетов. –

2

Операторы сравнения

-eq    Equal 
-ne    Not equal 
-ge    Greater than or equal 
-gt    Greater than 
-lt    Less than 
-le    Less than or equal 
-like   Wildcard comparison 
-notlike  Wildcard comparison 
-match   Regular expression comparison 
-notmatch  Regular expression comparison 
-replace  Replace operator 
-contains  Containment operator 
-notcontains Containment operator 
-shl   Shift bits left (PowerShell 3.0) 
-shr   Shift bits right – preserves sign for signed values. (PowerShell 3.0) 
-in    Like –contains, but with the operands reversed.(PowerShell 3.0) 
-notin   Like –notcontains, but with the operands reversed.(PowerShell 3.0) 
Смежные вопросы