2017-03-29 22 views
1

私が使用しているPowershellスクリプトで簡単なswitchステートメントを動作させるのに問題があります。以前はネストされたifを使用していて、ちょっと掃除したいと思っていました。コードは以下のとおりです。私がPowershell ISEをデバッグしてテストするとき(例えば、$ _ -match 'match1')、$ mystringの値に基づいて期待どおりに評価されます。しかし、Switchブロックでその値に関連付けられたコードを正しく実行することは決してできません。私は明らかな何かを見逃していると確信しており、任意の指導を感謝します。私の説明が理にかなってほしい。私はv5.1を実行しています。Powershellスイッチのステートメント文字列の一致が機能しない

ご迷惑をおかけして申し訳ありません。

Switch ($myString) 
{ 
    {$_ -match 'match1'} {somecodeblock} 
} 

あなたは$を使用していない_それらはから省略されることができます。

Switch ($myString) 
{ 
($_ -match 'match1') {somecodeblock} 
($_ -match 'match2') {somecodeblock} 
($_ -match 'match3') {somecodeblock} 
($_ -match 'match3') {somecodeblock} 
($_ -match 'match4') {somecodeblock} 
($_ -match 'match4') {somecodeblock} 
} 

答えて

2

正しい構文は$を使用しているとき(現在ブラケットを使用している)_あなたのテストを中心に中括弧を使用することです完全にテストし、-wildcardパラメータを使用した場合はこれを行うことができます。

Switch -wildcard ($myString) 
{ 
    '*match1*' {somecodeblock} 
} 
+1

私の考えでは、文法の間違いかもしれません。その変更はトリックでした。 Mark大変ありがとうございます。 – Jeff

関連する問題