0

パスワードに文字、数字、および特殊文字が含まれていることを確認するスクリプトを作成しようとしています。これは私がこれまでに持っているものです:

 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. help@menow1"

   $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))

      ) 

それは私が望むことのほとんどを行います。パスワードとして cat を入力して Enter キーを押すと、パスワードの入力を再度求めるプロンプトが表示されます。私がcats1234を入れると、これはパスしてスクリプトは終了します。もう一度プロンプトを表示して、cats1234$ を入力した場合にのみ通過するようにしたいもの。

ありがとう!

4

1 に答える 1

1

これを試してください:

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

$psw
于 2013-06-22T10:14:38.820 に答える