5

是否可以将 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 包含整个代码块作为字符串。

4

2 回答 2

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
于 2009-04-10T17:39:00.540 回答
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,但我认为这可能有效。

于 2009-04-10T17:40:11.283 回答