none
Powershell Passwortgenerator RRS feed

  • 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?

    Dienstag, 1. August 2017 09:36

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.

    Dienstag, 1. August 2017 10:01

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.

    Dienstag, 1. August 2017 10:01
  • Prima, das wars natürlich. Vielen Dank
    Dienstag, 1. August 2017 10:18