私は次の変数があります。のPowerShell:変数の値を制限
If ($UPNSuffixChange) {}
アイデアは、その変数であること:これがtrueの場合にのみ実行されますif文があります私のスクリプトで
$UPNSuffixChange = $True
を$False
に設定すると、このセクションはスキップされます。
誤った値を避けるために、この変数の値を$True
または$False
に制限するにはどうすればよいですか?
私は次の変数があります。のPowerShell:変数の値を制限
If ($UPNSuffixChange) {}
アイデアは、その変数であること:これがtrueの場合にのみ実行されますif文があります私のスクリプトで
$UPNSuffixChange = $True
を$False
に設定すると、このセクションはスキップされます。
誤った値を避けるために、この変数の値を$True
または$False
に制限するにはどうすればよいですか?
強くタイプは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
を使用 例;他のタイプでも同じです。
"数字"と言うとき、本当に "数字"を意味します: '$ UPNSuffixChange = 33.4'は合法です(そして' $ True'を割り当てます)。 '[switch] $ UPNSuffixChange = $ true'はより制限的で、実際には' $ False'と '$ True'のみを許可します。 (そのようなスイッチパラメータを使うべきかどうかは議論の余地がありますが)。 –
@JeroenMostert - 良い点は、 '0 = $ false'、' non-0 = $ true'もPowerShellのことです。私は '[switch]'タイプがOPの指定された仕様に完全にマッチすると思います。回答を投稿することを考えてupvoteできます。 – gms0ulman
迅速な対応に感謝します。 [bool]はこのインスタンスに対してうまくいき、スクリプトの他のユーザーが設定する変数になります。この変数に$ trueまたは$ false以外のものを入力するとエラーになります。 – jshizzle
SWITCHタイプを使用できます。 スイッチには$ trueまたは$ falseしか指定できません。 デフォルトは$ falseです。
[switch]$var = $true
if($var){
"Var is TRUE"
}
If(!$var){
"Var is FALSE"
}
誰が変数を割り当てるのですか? '$ UPNSuffixChange'を関数またはスクリプト全体の' [switch] 'パラメータにすることを考慮してください。正しい値を渡すのは単純で自然です。 [Cmdlets](https://technet.microsoft.com/library/ff677563)は、緩いスクリプトよりもずっと面白いです。 –
アドバイスをいただきありがとうございますが、このような複数の変数がスクリプトの先頭にあります。変数のいずれかがtrueまたはfalseに設定されていないと、スクリプトセクションに到達するまで待つのではなく、代わりにそのポイントで責任を負うことになります。これらの変数は、必要に応じて異なるセクションをオンとオフに切り替えるだけです。 – jshizzle