Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Azure CLI/Powershell密码要求_Regex_Azure_Powershell_Azure Cli_Azure Cli2 - Fatal编程技术网

Regex Azure CLI/Powershell密码要求

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

因此,我试图使一个变量与在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 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
,因为我们有