2013-06-22 43 views
0

我正在嘗試構建一個腳本,用於檢查密碼是否包含字母,數字和特殊字符。這是我到目前爲止:測試密碼在PowerShell腳本中有特殊字符

Write-Output " Enter db Password - DO NOT Use spaces - " 
Write-Output " No part of the username can be contained in the password" 

    do {$pdb=read-host " Must have 8 characters include at least 1 number & 1 special character i.e. [email protected]" 

    $string = $pdb 
    $pat = "^[a-zA-Z0-9\s]+$" 
    $special = [regex]"[^a-zA-Z0-9]" 
    } 

    while (!$pdb -or 

     !($pdb.length -ge 8) -or 

     ($pdb.Contains($pat)) -or 

     ($pdb.Contains($special)) 

    ) 

它大部分我想要的。如果我輸入密碼貓並按Enter鍵,則會再次提示輸入密碼。如果我放入cats1234,它會通過並且腳本結束。我想讓它再次提示,只有當我輸入cats1234 $時纔會通過。

謝謝!

回答

1

試試這個:

do { 
    $psw=read-host "Must have 8 characters include at least 1 number & 1 special character i.e. [email protected]" 
} while (
    $psw.length -lt 8 -or $psw -notmatch '[^a-zA-Z0-9]' -or $psw -notmatch '\d' 
) 

$psw 
+0

這主要工作。如果有人輸入所有數字和特殊字符,它不會被捕獲.i.e 12345678!通過,它應該失敗。但是這讓我更接近我想要做的事情。謝謝!!! – user1846439