2009-04-10 4 views
5

switch 문 결과를 변수에 할당 할 수 있습니까? 대신 예를 들어Powershell v1 : switch 문의 결과를 변수에 할당 할 수 있습니까?

: 문자열로 전체 코드 블록을 포함 $ 위치에 위의 결과를 시도

$Location = 
{ 
    switch ($Extension) 
    { 
     doc {"C:\Users\username\Documents\"; break} 
     exe {"C:\Users\username\Downloads\"; break} 
     default {"C:\Users\username\Desktop\"} 
    } 
} 

:

switch ($Extension) 
    { 
     doc {$Location = "C:\Users\username\Documents\"; break} 
     exe {$Location = "C:\Users\username\Downloads\"; break} 
     default {$Location = "C:\Users\username\Desktop\"} 
    } 

는 수와 비슷한 일을하는 것입니다.

답변

7

V1의 경우 switch 문을 함수로 래핑합니다.

function Get-DocumentLocation($Extension) 
{ 
    switch ($Extension) 
    { 
     doc {"C:\Users\username\Documents\"; break} 
     exe {"C:\Users\username\Downloads\"; break} 
     default {"C:\Users\username\Desktop\"} 
    } 
} 

$Location = Get-DocumentLocation $extension 
+0

또한 ScriptBlock ({switch() ...})을 만들었으므로 원본 코드에는 코드 문자열이 표시되지만이를 호출하지는 않습니다. & {switch() ...} – JasonMArcher

2

다음은 작동합니까?

$Location = (switch ($Extension) { 
       doc {"C:\Users\username\Documents\"; break} 
       exe {"C:\Users\username\Downloads\"; break} 
       default {"C:\Users\username\Desktop\"} 
      }) 

아니면

$Location = $(switch ($Extension) { 
       doc {"C:\Users\username\Documents\"; break} 
       exe {"C:\Users\username\Downloads\"; break} 
       default {"C:\Users\username\Desktop\"} 
      }) 

지금, 테스트 여기 v1이 없지만 나는이 작동하지 않을 수 있습니다 생각합니다.

+0

Aren ' 두 가지 선택이 똑같습니까? –

+0

더 이상, 감사합니다 :) – Joey

관련 문제