Benutzer mit den meisten Antworten
Powershell Passwortgenerator

Frage
-
Hallo zusammen,
ich habe hier einen Passwortgenerator der eigentlich das macht was er soll. Man kann die Passwortlänge bei dem Aufruf als Parameter übergeben und als Voreinstellung ist die Passwortlänge 8.
Bis 34 Zeichen als Passwort ist alles Bluna, aber bei 35 kommt keine Rückgabe und die Funktion läuft sich tot.
Function New-Password { <# .SYNOPSIS Erstellung eines Passworts mit 8 Zeichen. .DESCRIPTION Dieses muss Großbuchstaben, Kleinbuchstaben und mindestens eine Zahl beinhalten .EXAMPLE New-Password -Passwwordlength 10 .NOTES .INPUTS Wenn eine abweichende Passwortlänge benötigt wird, kann diese als Parameter übergeben werden .OUTPUTS List of output types produced by this function. #> param ( [int] $PasswordLength=8 ) [string]$global:NewPassword = $null $ItemCounter = $null $CharArray = @() $GBCounter = $Null $KBCounter = $Null $DCounter = $Null For ($i = 1; $i -le $PasswordLength; $i++) { $GrossBuchstaben = Get-Random -InputObject A,B,C,D,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z $KleinBuchstaben = Get-Random -InputObject a,b,c,d,e,f,g,h,i,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z $Zahlen = Get-Random -InputObject 1,2,3,4,5,6,7,8,9 $Item = Get-random -Maximum ($GrossBuchstaben,$KleinBuchstaben,$Zahlen) Switch ($Item) { $GrossBuchstaben {$GBCounter = 1} $KleinBuchstaben {$KBCounter = 1} $Zahlen {$DCounter = 1} } If ($CharArray | Where-Object {$_ -eq $Item}) { $i = $i -1 Continue } Else { $global:NewPassword += $Item $CharArray += $Item } } $ItemCounter = $GBCounter + $KBCounter + $DCounter If ($ItemCounter -lt 3) { $global:NewPassword = $null New-Password} }
könnt ihr mir helfen?
Antworten
-
Ich vermute, deine Where-Prüfung ist nicht casesensitive, so dass Gross/Klein nicht unterschieden wird und somit nur 34 Zeichen zulässig sind.
Achte mal darauf, ob du bei den anderen Varianten bis 34 Zeichen auch doppelte Buchstaben (1xgross, 1xklein) vorkommen.- Als Antwort markiert Timson_Hamburg Dienstag, 1. August 2017 10:17
Alle Antworten
-
Ich vermute, deine Where-Prüfung ist nicht casesensitive, so dass Gross/Klein nicht unterschieden wird und somit nur 34 Zeichen zulässig sind.
Achte mal darauf, ob du bei den anderen Varianten bis 34 Zeichen auch doppelte Buchstaben (1xgross, 1xklein) vorkommen.- Als Antwort markiert Timson_Hamburg Dienstag, 1. August 2017 10:17