web-dev-qa-db-ja.com

PowerShellで変数が8文字を超えていることをテストするにはどうすればよいですか?

$ dbUserNameの文字数が8文字を超えているかどうかをテストするにはどうすればよいですか?

これを実行できるコマンドまたは一連のコマンドを見つけることができませんでした。変数がヌルであるかどうかを見つけることができました:

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"
}
31
user1794918

[String]タイプのlengthプロパティを使用します。

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

if条件では、-gtの代わりに>を使用する必要があることに注意してください。 PowerShellは、次の比較演算子を使用して、値とテスト条件を比較します。

  • -eq =等しい
  • -ne =等しくない
  • -lt =より小さい
  • -gt =より大きい
  • -le =より小さいか等しい
  • -ge =以上
68
Ravi Thapliyal

正規表現に対して-matchを使用することもできます。例:

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

また、あなたが私のようで、中括弧がコードブロックと同じ水平位置にあるようにしたい場合は、コードブロックが次の行にあることを期待しているので、それを新しい行に置くことができます。最初の波括弧をコマンドとインラインにする必要がある一部のコマンドでは、Graveアクセントマーカー( `)を使用して、次の行を継続として扱うようにpowershellに指示できます。

1
user3524477