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 に答える