ユーザーが空の文字列を含むことができないファイル名を指定する必要がある関数を作成しようとしています。また、文字列にドットを含めることはできません。この関数を実行すると、たとえば「test」と入力するとループし続けます。理由について何か考えはありますか?
function Export-Output {
do {
$exportInvoke = Read-Host "Do you want to export this output to a new .txt file? [Y/N]"
} until ($exportInvoke -eq "Y" -or "N")
if ($exportInvoke -eq "Y") {
do {
$script:newLog = Read-Host "Please enter a filename! (Exclude the extension)"
if ($script:newLog.Length -lt 1 -or $script:newLog -match ".*") {
Write-Host "Wrong input!" -for red
}
} while ($script:newLog.Length -lt 1 -or $script:newLog -match ".*")
ni "$script:workingDirectory\$script:newLog.txt" -Type file -Value $exportValue | Out-Null
}
}
編集:
関連するメモ:
do {
$exportInvoke = Read-Host "Do you want to export this output to a new .txt file? [Y/N]"
} until ($exportInvoke -eq "Y" -or "N")
これらのコード行を使用すると、Enter キーを押すだけでRead-Host
. "Y" -or "N"
単純に置き換えると、"Y"
そうではありません。なぜこれが起こっているのかについて何か考えはありますか?