私はカスタムユーザー入力の検証方法について取り組んでいますが、これは正しく動作するように苦労しています。ここで
は、スクリプトの基本的な考え方です:
$answer = Read-Host "Are you sure you wish to continue? [Y]es or [N]o"
while (!$answer -AND $answer -ine "y" -AND $answer -ine "yes" -AND $answer -ine "n" -AND $answer -ine "no") {
$answer = Read-Host "You hand entered an invalid response.`nPlease enter [Y]es or [N]o"
}
if ($answer -ieq "yes" -OR $answer -ieq "y") {
do action
}
else {
don't do action
}
私が直面しています問題は、文字列がnull /空の場合は上記の検証で、それが唯一の確認ということです。私が答えに何を入力しても、他の4つの基準は問題にはならず、スクリプトはWHILEループを抜けてIF-ELSEステートメントに進みます。
例:
I入力 "はい"、 "YES"、 "はい"、 "Y"、 "Y" またはこれに他の同様の変動した場合、アプリケーションはWHILE文を終了/スキップされますと、 IF文に進み、意図したとおりに目的のアクションを実行します。何も入力しない(文字列null/emptyを残す)と、意図したとおりにWhileループ内にとどまります。しかし、他の入力があれば、アプリケーションはWHILEステートメントをスキップ/終了し、ELSEステートメントに進みます。これは私が望むものではありません。
私は、私も-ANDおよび-ORで遊んでてきた-eq、-ieq、-ceq、様、-ilike、-ne、-ine、-notlikeを使用して、これを試みたが、 を-inotlikeていますオペレータは、おそらく私はそのセットアップを台無しにすることを望んでいる。 残念ながら、すべて私は同じ結果をもたらしました。
ご提供いただけるアドバイスをありがとうございます。
ところで私はこれから何をしようとしているのか分かりません。ほとんどの公式サイトでオペレーターの働きを調べています。これまでのところ、すべてのロジックはうまくいくと言いますが、実行すると失敗します。
ああ。私はそれが問題を引き起こすだろうとは気付かなかった。大変助けていただきありがとうございます。 – Brandon