这是我的第一个脚本,所以不要打败我!

我正在研究根据用户输入创建网络目录和AD组的脚本。以下是我到目前为止所获得的。它可以工作,但是我想做一些改进。

我想验证用户输入的长度。我找到了一篇文章(PowerShell ValidateLength with Read-Host),该文章解释了如何使用ValidateLength字符串检查用户的输入。这很好用,但是,我想将其包含在循环中。如果用户输入的字符不完全是X,请重试。现在,它只是出错了。

任何帮助将不胜感激!

[ValidateLength(2,2)]$Division = [string](Read-Host -Prompt 'Please enter the TWO digit division number ')
[ValidateLength(4,4)]$Matter = [string](Read-Host -Prompt 'Please enter the FOUR digit matter number ')
[ValidateLength(4,4)]$Client = [string](Read-Host -Prompt 'Please enter the FOUR digit client number ')

最佳答案

尽管各种[Validate ...属性都可用于变量,但这是非标准用法(很少有人知道它们)。当您确实想出错时,它效果最好。

如果您不这样做,请自己检查一下,然后决定在不想要的情况下该怎么办:

do {
    $Division = [string](Read-Host -Prompt 'Please enter the TWO digit division number ')
    if ($Divison.Length -ne 2) {
        continue
    }

    $Matter = [string](Read-Host -Prompt 'Please enter the FOUR digit matter number ')
    if ($Matter.Length -ne 4) {
        continue
    }

    $Client = [string](Read-Host -Prompt 'Please enter the FOUR digit client number ')
    if ($Client.Length -ne 4) {
        continue
    }

    break
} while ($true)

10-02 15:55