2017-08-11 10 views
2

私は次の変数があります。のPowerShell:変数の値を制限

If ($UPNSuffixChange) {} 

アイデアは、その変数であること:これがtrueの場合にのみ実行されますif文があります私のスクリプトで

$UPNSuffixChange = $True 

$Falseに設定すると、このセクションはスキップされます。

誤った値を避けるために、この変数の値を$Trueまたは$Falseに制限するにはどうすればよいですか?

+1

誰が変数を割り当てるのですか? '$ UPNSuffixChange'を関数またはスクリプト全体の' [switch] 'パラメータにすることを考慮してください。正しい値を渡すのは単純で自然です。 [Cmdlets](https://technet.microsoft.com/library/ff677563)は、緩いスクリプトよりもずっと面白いです。 –

+0

アドバイスをいただきありがとうございますが、このような複数の変数がスクリプトの先頭にあります。変数のいずれかがtrueまたはfalseに設定されていないと、スクリプトセクションに到達するまで待つのではなく、代わりにそのポイントで責任を負うことになります。これらの変数は、必要に応じて異なるセクションをオンとオフに切り替えるだけです。 – jshizzle

答えて

2

強くタイプはboolean通りである:

[bool]$UPNSuffixChange = $True 

試みは、この変数に$true/$false以外の(または当1/0)を割り当て行われた場合、PowerShellを介します次のエラー:

Cannot convert value "System.String" to type "System.Boolean". Boolean parameters accept only Boolean values and numbers, such as $True, $False, 1 or 0.

私としてSystem.Stringを使用 例;他のタイプでも同じです。

+1

"数字"と言うとき、本当に "数字"を意味します: '$ UPNSuffixChange = 33.4'は合法です(そして' $ True'を割り当てます)。 '[switch] $ UPNSuffixChange = $ true'はより制限的で、実際には' $ False'と '$ True'のみを許可します。 (そのようなスイッチパラメータを使うべきかどうかは議論の余地がありますが)。 –

+0

@JeroenMostert - 良い点は、 '0 = $ false'、' non-0 = $ true'もPowerShellのことです。私は '[switch]'タイプがOPの指定された仕様に完全にマッチすると思います。回答を投稿することを考えてupvoteできます。 – gms0ulman

+1

迅速な対応に感謝します。 [bool]はこのインスタンスに対してうまくいき、スクリプトの他のユーザーが設定する変数になります。この変数に$ trueまたは$ false以外のものを入力するとエラーになります。 – jshizzle

2

SWITCHタイプを使用できます。 スイッチには$ trueまたは$ falseしか指定できません。 デフォルトは$ falseです。

[switch]$var = $true 

if($var){ 
    "Var is TRUE" 
} 
If(!$var){ 
    "Var is FALSE" 
} 
関連する問題