Question:
I am in the process of converting some old VB script to Powershell. I am trying to use a Switch statement to set multiple variables. Is this possible in Powershell? In VBS my code would look something like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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 |
I have tried something similar in PS, but it doesn’t seem to set the variables.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
switch ($cENV) { DEV { $SRCDRV = "\\Server1" $DSTDRV = "\\Server2\Folder1\" break } TEST { $SRCDRV = "\\Server1" $DSTDRV = "\\Server2\Folder2\" break } PROD { $SRCDRV = "\\Server1" $DSTDRV = "\\Server2\Folder2\" break } } |
When I check the value of either DESTDRV or SRCDRV I get an error saying: The variable ‘$SRCDRV’ cannot be retrieved because it has not been set. Any ideas on what I’m doing wrong?
Answer:
Are you setting $cENV first?
I’m running that exact script above like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$cENV = "DEV" switch ($cENV) { DEV { $SRCDRV = "\\Server1" $DSTDRV = "\\Server2\Folder1\" } TEST { $SRCDRV = "\\Server1" $DSTDRV = "\\Server2\Folder2\" } PROD { $SRCDRV = "\\Server1" $DSTDRV = "\\Server2\Folder2\" } } $SRCDRV |
And it’s returning
1 2 |
\\Server1 |