user1794918
user1794918

Reputation: 1149

How can I test that a variable is more than eight characters in PowerShell?

How do test if the number of characters in $dbUserName is more than eight characters?

I have been unable to locate a command or series of commands that will let me do this. I have only been able to find if the variable is null:

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

But I would like to next test like this:

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

Upvotes: 67

Views: 216120

Answers (3)

Kiprono Elijah Koech
Kiprono Elijah Koech

Reputation: 338

Works on Windows PowerShell v7.

You can also use the ternary operator ? as follows?

PS C:> ("Kipro".Length -gt 8) ? "True" : "False"

Output: False

PS C:> ("Hello, how are you doing?".Length -gt 8) ? "True" : "False"

Output: True

And of course, you can use check the condition of a variable holding a string as follows:

PS C:> $str1="Fort-Ternan"

PS C:> ($str1.Length -gt 8) ? "True" : "False"

Output: True

Upvotes: 0

Ravi K Thapliyal
Ravi K Thapliyal

Reputation: 51711

Use the length property of the [String] type:

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

Please note that you have to use -gt instead of > in your if condition. PowerShell uses the following comparison operators to compare values and test conditions:

  • -eq = equals (==)
  • -ne = not equals (!=)
  • -lt = less than (<)
  • -gt = greater than (>)
  • -le = less than or equals (<=)
  • -ge = greater than or equals (>=)

Upvotes: 130

user3524477
user3524477

Reputation: 59

You can also use -match against a Regular expression. Ex:

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

Also if you're like me and like your curly braces to be in the same horizontal position for your code blocks, you can put that on a new line, since it's expecting a code block it will look on next line. In some commands where the first curly brace has to be in-line with your command, you can use a grave accent marker (`) to tell powershell to treat the next line as a continuation.

Upvotes: 4

Related Questions