2012-07-30 10 views
5

私はいくつかの古いVBスクリプトをPowershellに変換しています。私は複数の変数を設定するためにSwitchステートメントを使用しようとしています。これはPowershellで可能ですか? VBSでは私のコードは次のようなものになります。複数の変数を設定するPowerShellのスイッチステートメント

Select Case ENV 
    Case "DEV" 
     : SRCDRV = "\\Server1" _ 
     : DESTDRV = "\\Server1\Folder1\" 

    Case "TEST" 
     : SRCDRV = "F:" _ 
     : DESTDRV = "\\Server1\Folder2\" 

    Case "PROD" 
     : SRCDRV = "F:" _ 
     : DESTDRV = "\\Server2\Folder2\" 
End Select 

を私はPSで同様のものを試してみましたが、変数を設定していないようです。それが設定されていないため、検索することができません変数「$のSRCDRV」:私はDESTDRVまたはSRCDRVのいずれかの値をチェックすると

switch ($cENV) { 
    DEV { 
     $SRCDRV = "\\Server1" 
     $DSTDRV = "\\Server2\Folder1\" 
     break  
    } 
    TEST { 
     $SRCDRV = "\\Server1" 
     $DSTDRV = "\\Server2\Folder2\" 
     break 
    } 
    PROD { 
     $SRCDRV = "\\Server1" 
     $DSTDRV = "\\Server2\Folder2\" 
     break 
    } 
} 

私はというエラーを取得します。私が間違っていることに関するアイデアは?

答えて

4

$ cENVを先に設定していますか?

私はこのように上にその正確なスクリプトを実行しているよ:そう、彼は$ cENVをすることはできませんエラーメッセージになるだろう、

$cENV = "DEV" 
switch ($cENV) { 
    DEV { 
     $SRCDRV = "\\Server1" 
     $DSTDRV = "\\Server2\Folder1\" 
    } 
    TEST { 
     $SRCDRV = "\\Server1" 
     $DSTDRV = "\\Server2\Folder2\" 
    } 
    PROD { 
     $SRCDRV = "\\Server1" 
     $DSTDRV = "\\Server2\Folder2\" 
    } 
} 
$SRCDRV 

そして、それはcENVは、おそらくいくつかの値を持つ

\\Server1 
+0

$を返しています取り出された。 – dugas

+0

ありがとう、そうです、$ cENVを "DEV"に設定すると正しい値が返されます。私はそれを具体的に設定しようとは思わなかった。 $ cENV変数は、スクリプトファイルの場所を決定する関数によって設定されています。スイッチ "DEV"、 "TEST"、 "PROD"を引用符で囲んだ場合、それはチャンピオンのように機能します。あなたの助けをありがとう! – mack

9

あなたのコードは、スイッチのケースが見つかった場合に機能します。 $ cENVにはおそらく "DEV"、 "TEST"、または "PROD"と一致しない値があります。デフォルトのスイッチケースを追加して、一致するものがない場合は何かを実行します。例:

switch ($cENV) { 
    DEV { 
    $SRCDRV = "\\Server1" 
    $DSTDRV = "\\Server2\Folder1\" 
    break  
    } 
    TEST { 
    $SRCDRV = "\\Server1" 
    $DSTDRV = "\\Server2\Folder2\" 
    break 
    } 
    PROD { 
    $SRCDRV = "\\Server1" 
    $DSTDRV = "\\Server2\Folder2\" 
    break 
    } 
    default { 
    throw "No matching environment for `$cENV: $cENV" 
    } 
} 
関連する問題