Próbuję więc napisać skrypt, który ustawia spedytry DNS do 2 zaprogramowanych adresów IP, ale jeśli użytkownik chce wybrać innego IP, musi tylko podać je w monicie.

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

My If / Element nie wydaje się jednak pracować, jeśli naciśnieję "Y", nadal prosi o 2 IP? Co jest nie tak z moim kodem?

Dzięki

1
Kahn Kah 15 luty 2017, 16:06

2 odpowiedzi

Najlepsza odpowiedź

Jest to powszechny błąd wśród tych, którzy nie są całkowicie wygodne z PowerShell. Porównania w PowerShell nie są wykonywane z klasycznymi symbolami operatora; Musisz użyć operatorów "Fortran-Style":

 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
2
Jeff Zeitlin 15 luty 2017, 13:14

Operatorzy porównawcze

-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)
2
MahmutKarali 15 luty 2017, 14:17