Regex Azure CLI/Powershell密码要求
因此,我试图使一个变量与在azure CLI中创建虚拟机的密码要求相匹配 要做到这一点,它必须有以下3个!大写,1个小写,1个特殊字符或数字 这是我试图更改的主要代码Regex Azure CLI/Powershell密码要求,regex,azure,powershell,azure-cli,azure-cli2,Regex,Azure,Powershell,Azure Cli,Azure Cli2,因此,我试图使一个变量与在azure CLI中创建虚拟机的密码要求相匹配 要做到这一点,它必须有以下3个!大写,1个小写,1个特殊字符或数字 这是我试图更改的主要代码 $AdminPassword = Read-Host -Prompt "Please insert a Admin Password (Password must have 3 of the following: 1 lower case character, 1 upper case character, 1 number an
$AdminPassword = Read-Host -Prompt "Please insert a Admin Password (Password must have 3 of the following: 1 lower case character, 1 upper case character, 1 number and 1 special character)"
这是我更改的代码,但工作不正常
do
{
$AdminPassword = Read-Host -Prompt "Please insert a Admin Password (Password must have the 3 of the following: 1 lower case character, 1 upper case character, 1 number and 1 special character)"
}
until($AdminPassword -Like "[A-Z][A-Z][A-Z][a-z][a-z][a-z][0-9][0-9][0-9][!@$#$%^&*()_+\-=\[\]{};'':"\\|,.<>\/? ][!@$#$%^&*()_+\-=\[\]{};'':"\\|,.<>\/? ][!@$#$%^&*()_+\-=\[\]{};'':"\\|,.<>\/? ]")
Write Match
do
{
$AdminPassword=读取主机-提示“请插入管理员密码(密码必须包含以下3个字符:1个小写字符、1个大写字符、1个数字和1个特殊字符)”
}
直到($AdminPassword-Like“[A-Z][A-Z][A-Z][A-Z][A-Z][0-9][0-9][1.!@$\\$$%^&*”(“\+\-=\[\]{};”:“\\\\\,.\/?][!@$\\\\\\\\$%^&*”(“\\\\+-=\[\[\\[\\\\\\\\\\\\\\\\]%%./=”,“!\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
写匹配
通过写匹配行,我知道它何时成功
我在这里遇到的真正问题是,我希望所有4个要求都是3倍,所以3个大写字母3个小写字母等等
我也想有一些特别的角色
但是#注释了后面的所有代码
提前感谢您阅读本文并发布您的anwser!!!我不确定是否只需一个正则表达式即可完成此操作。。 作为替代,下面有一个小助手函数来做测试
function Test-AdminPassword {
[CmdletBinding()]
Param(
[Parameter(Position = 0, Mandatory=$true)]
[string]$Password,
[Parameter(Position = 1)]
[int]$Requirements = 5
)
$result = 0
# test length between 12 and 24
if ($Password.Length -in 12..24) {
$result++
}
# test uppercase
if (($Password -creplace '[^A-Z]', '').Length -ge 3) {
$result++
}
# test lowercase
if (($Password -creplace '[^a-z]', '').Length -ge 3) {
$result++
}
# test digits
if (($Password -replace '[^0-9]', '').Length -ge 3) {
$result++
}
# test special characters
if (($Password -creplace '[^!@$#%^&*()_+\-=\[\]{};'':"\\|,.<>\/? ]', '').Length -ge 3) {
$result++
}
# return $true if the password complies with at least $requirements
return ($result -ge $Requirements)
}
do {
$AdminPassword = Read-Host -Prompt "Please insert an Admin Password (must have the 3 lower case characters, 3 upper case characters, 3 digits and 3 special characters)"
} until (Test-AdminPassword $AdminPassword)
功能测试密码{
[CmdletBinding()]
Param(
[参数(位置=0,强制=true)]
[字符串]$Password,
[参数(位置=1)]
[int]$Requirements=5
)
$result=0
#测试长度介于12和24之间
如果($Password.Length-in 12..24){
$result++
}
#测试大写字母
如果($Password-creplace'[^A-Z]','').Length-ge 3){
$result++
}
#测试小写字母
如果($Password-creplace'[^a-z]','').Length-ge 3){
$result++
}
#测试数字
如果($Password-替换“[^0-9]”,“”).Length-ge 3){
$result++
}
#测试特殊字符
如果($Password-creplace'[^!@$\\%^&*()\+\-=\[\]{};“”:“\\\\\”,.\/?”,“”)。长度-ge 3){
$result++
}
#如果密码至少符合$要求,则返回$true
返回($result-ge$要求)
}
做{
$AdminPassword=读取主机-提示“请插入管理员密码(必须包含3个小写字符、3个大写字符、3个数字和3个特殊字符)”
}直到(Test AdminPassword$AdminPassword)
我不确定这是否可以用一个正则表达式完成。。
作为替代,下面有一个小助手函数来做测试
function Test-AdminPassword {
[CmdletBinding()]
Param(
[Parameter(Position = 0, Mandatory=$true)]
[string]$Password,
[Parameter(Position = 1)]
[int]$Requirements = 5
)
$result = 0
# test length between 12 and 24
if ($Password.Length -in 12..24) {
$result++
}
# test uppercase
if (($Password -creplace '[^A-Z]', '').Length -ge 3) {
$result++
}
# test lowercase
if (($Password -creplace '[^a-z]', '').Length -ge 3) {
$result++
}
# test digits
if (($Password -replace '[^0-9]', '').Length -ge 3) {
$result++
}
# test special characters
if (($Password -creplace '[^!@$#%^&*()_+\-=\[\]{};'':"\\|,.<>\/? ]', '').Length -ge 3) {
$result++
}
# return $true if the password complies with at least $requirements
return ($result -ge $Requirements)
}
do {
$AdminPassword = Read-Host -Prompt "Please insert an Admin Password (must have the 3 lower case characters, 3 upper case characters, 3 digits and 3 special characters)"
} until (Test-AdminPassword $AdminPassword)
功能测试密码{
[CmdletBinding()]
Param(
[参数(位置=0,强制=true)]
[字符串]$Password,
[参数(位置=1)]
[int]$Requirements=5
)
$result=0
#测试长度介于12和24之间
如果($Password.Length-in 12..24){
$result++
}
#测试大写字母
如果($Password-creplace'[^A-Z]','').Length-ge 3){
$result++
}
#测试小写字母
如果($Password-creplace'[^a-z]','').Length-ge 3){
$result++
}
#测试数字
如果($Password-替换“[^0-9]”,“”).Length-ge 3){
$result++
}
#测试特殊字符
如果($Password-creplace'[^!@$\\%^&*()\+\-=\[\]{};“”:“\\\\\”,.\/?”,“”)。长度-ge 3){
$result++
}
#如果密码至少符合$要求,则返回$true
返回($result-ge$要求)
}
做{
$AdminPassword=读取主机-提示“请插入管理员密码(必须包含3个小写字符、3个大写字符、3个数字和3个特殊字符)”
}直到(Test AdminPassword$AdminPassword)
对于特殊字符,正则表达式应为下面代码中的正则表达式
您需要对正则表达式使用单引号:
do
{
$s=Read-Host -Prompt "please enter a password"
}
until($s -like '[A-Z][A-Z][A-Z][a-z][a-z][a-z][0-9][0-9][0-9][!@$#$%^&*()_+\-\=`[`]{};'':`"\\|,.<>\/? ][!@$#$%^&*()_+\-\=`[`]{};'':`"\\|,.<>\/? ][!@$#$%^&*()_+\-\=`[`]{};'':`"\\|,.<>\/? ]')
write-host "complete entering password"
do
{
$s=读取主机-提示“请输入密码”
}
直到($s-像“[A-Z][A-Z][A-Z][A-Z][A-Z][0-9][0-9][0-9][!@$\$\$%^&*(?)\+\-=”[`.\\\\\\\”,.\/?[!@$\\\\\\\$%^&*(+\-\==[`\\\\\\\\\\\\\\\\\\\-=”,.\/-[!$\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
写入主机“完整输入密码”
测试结果如下:
对于特殊字符,正则表达式应为下面代码中的正则表达式 您需要对正则表达式使用单引号:
do
{
$s=Read-Host -Prompt "please enter a password"
}
until($s -like '[A-Z][A-Z][A-Z][a-z][a-z][a-z][0-9][0-9][0-9][!@$#$%^&*()_+\-\=`[`]{};'':`"\\|,.<>\/? ][!@$#$%^&*()_+\-\=`[`]{};'':`"\\|,.<>\/? ][!@$#$%^&*()_+\-\=`[`]{};'':`"\\|,.<>\/? ]')
write-host "complete entering password"
do
{
$s=读取主机-提示“请输入密码”
}
直到($s-像“[A-Z][A-Z][A-Z][A-Z][A-Z][0-9][0-9][0-9][!@$\$\$%^&*(?)\+\-=”[`.\\\\\\\”,.\/?[!@$\\\\\\\$%^&*(+\-\==[`\\\\\\\\\\\\\\\\\\\-=”,.\/-[!$\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
写入主机“完整输入密码”
测试结果如下:
添加了regex标记。添加了regex标记。但这不允许
AaBbCc1!2@3#
或超过最小字符数的密码Ey Ivan感谢anwser!不幸的是,我忘了提到这是它所需的最小字符数,我可以超过12个字符你的anwser也是正确的!再次非常感谢你的anwser!!!但是这不允许AaBbCc1!2@3#
或包含超过所需最小字符的密码Ey Ivan感谢anwser!不幸的是,我忘了提到这是它所需的最小字符数,而且我可以包含超过12个字符这是一个向上投票,因为你的anwser也是正确的!再次感谢你的anwser!!!感谢anwser Theo!我唯一忘了在问题中提到的是它需要至少12个字符,最多24个字符。你可能还知道如何获得最大值吗?@Brynn我已经更新了答案来测试密码l长度也在12到24之间(包括12到24)。干杯。非常感谢西奥!现在我希望我能投票两次!我感谢你为此付出的时间和努力,希望你今天过得愉快!@Brynn。我忘了更改需求数量。现在应该是[int]$requirements=5
,因为我们有