Powershell v1:是否可以将switch语句的结果赋给变量?

时间:2009-04-10 16:32:53

标签: powershell switch-statement

是否可以将switch语句的结果赋给变量。

例如,而不是:

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

是否可以做类似的事情:

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

尝试上面的结果是$ location包含整个代码块作为字符串。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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在这里进行测试,但我认为这可行。