Reputation: 1149
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
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
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
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