62

如何测试 $dbUserName 中的字符数是否超过八个字符?

我一直无法找到可以让我执行此操作的命令或一系列命令。我只能找到变量是否为空:

if ($dbUserName) {
    Write-Output " You left Username blank"
    $dbUserName = read-host
}

但我想像这样进行下一次测试:

if ($dbUserName [String] > 8 ) }
    Write-Output " Please enter more than 8 characters "
    $dbUserName=read-host " Re-enter database user name"
}
4

2 回答 2

123

使用类型的length属性[String]

if ($dbUserName.length -gt 8) {
    Write-Output "Please enter more than 8 characters."
    $dbUserName = Read-Host "Re-enter database username"
}

请注意,您必须使用-gt而不是>在您的if条件下使用。PowerShell 使用以下比较运算符来比较值和测试条件:

  • -eq= 等于 ( ==)
  • -ne= 不等于 ( !=)
  • -lt= 小于 ( <)
  • -gt= 大于 ( >)
  • -le= 小于或等于 ( <=)
  • -ge= 大于或等于 ( >=)
于 2013-04-28T11:34:13.303 回答
3

您还可以对正则表达式使用 -match。前任:

if ($dbUserName -match ".{8}" )
{
    Write-Output " Please enter more than 8 characters "
    $dbUserName=read-host " Re-enter database user name"
}

另外,如果您像我一样,并且希望您的花括号与代码块处于相同的水平位置,则可以将其放在新行上,因为它需要一个代码块,它将在下一行显示。在第一个大括号必须与您的命令内联的某些命令中,您可以使用重音符号 (`) 告诉 powershell 将下一行视为续行。

于 2015-09-09T17:20:10.380 回答