2017-02-15 19 views
0

DNSフォワーダを2つのプリセット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 

私の場合は/のElseIfしかし動作していないようです、私は「Y」を押すと、それはまだ2、IPのために頼みます?私のコードに何が問題なの?

おかげ

答えて

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

は非常にジェフをありがとう! PowerShellの比較方法として-eqが使用されていることはわかりませんでした。 –

+1

@KahnKah - PowerShellの独自のヘルプファイルは非常に便利です.PowerShellセッションの昇格時に 'Update-Help'コマンドを実行してからPowershellセッションで' Get-Help about_Comparison_Operators'を実行してください。 'Get-Help'は利用可能な最も有用なコマンドレットの1つです。 –

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) 
関連する問題