none
ARRAY auslesen und frei Nummer finden.

    Frage

  • Hallo,

    Ich habe ein fertiges Array, was aus bestimmten eingaben und auslesen der AD erstellt wird.

    Die Nummer die ausgelesen wird ist die nach dem Benutzername Kürzel, zum Beispiel Max Mustermann hätte mmu01.

    $UserNameNumber = "01 02 03 04 05"

    Jetzt möchte ich ganz gerne wenn ein neuer User kommt, das dieser die Nummer bekommt die entweder zwischendurch fehlt bzw. die nach der letzten Nummer kommt.

    In diesem Beispiel wäre dann Muster Mustermann mmu06

     

    irgendwie bekomm ich das nicht hin und hoffe dass mir hier jemand kurz hilft, vielleicht kann ich das dann besser nachvollziehen und verstehen.

    Vielen Dank im Voraus

    Markus

    Mittwoch, 19. April 2017 10:58

Antworten

  • Hallo,

    hier mal ein Ansatz:

    $name = "Mustermann"
    $UserNameNumber = "01 02 04 05"
    
    $split = $UserNameNumber.Split(" ") | %{ [int]$_}
    
    $splitcount = $split.count
    
    [int]$lastnumber = $split[-1]
    
    $nextnumber = $null
    
    if ($lastnumber -eq $splitcount){
    
    
    $nextnumber = $lastnumber + 1
    
    }
    else{
    
    
    $range = 1..$splitcount
    
    $nextnumber = $range | ? {$split -notcontains $_}| Select-Object -First 1
    
    
    }
    
    
    
    $nextnumber = "{0:D2}"-f $nextnumber 
    
    $nextname = "$name"+"$nextnumber"
    
    $nextname
    

    ich wandel dein String in ein Array von Zahlen um und vergleiche dann die Länge, wenn die passt, dann +1 wenn nicht, dann wird der Inhalt des Arrays überprüft.

    Grüße Andy

    • Als Antwort markiert markus5772 Mittwoch, 19. April 2017 13:09
    Mittwoch, 19. April 2017 12:11

Alle Antworten

  • Hallo,

    hier mal ein Ansatz:

    $name = "Mustermann"
    $UserNameNumber = "01 02 04 05"
    
    $split = $UserNameNumber.Split(" ") | %{ [int]$_}
    
    $splitcount = $split.count
    
    [int]$lastnumber = $split[-1]
    
    $nextnumber = $null
    
    if ($lastnumber -eq $splitcount){
    
    
    $nextnumber = $lastnumber + 1
    
    }
    else{
    
    
    $range = 1..$splitcount
    
    $nextnumber = $range | ? {$split -notcontains $_}| Select-Object -First 1
    
    
    }
    
    
    
    $nextnumber = "{0:D2}"-f $nextnumber 
    
    $nextname = "$name"+"$nextnumber"
    
    $nextname
    

    ich wandel dein String in ein Array von Zahlen um und vergleiche dann die Länge, wenn die passt, dann +1 wenn nicht, dann wird der Inhalt des Arrays überprüft.

    Grüße Andy

    • Als Antwort markiert markus5772 Mittwoch, 19. April 2017 13:09
    Mittwoch, 19. April 2017 12:11
  • Hallo Andy,

     

    da merkt man selber, dass man doch noch einen Menge Defizite hat.

    Ich bin die ganze Zeit am Überlegen wie ich das

    umsetzte und bin davon ausgegangen das ich da

    irgendeine For, Foreach, While, Do-Until, Continue, Break schleife benötige.

     

    Das man das auch so lösen kann, ist mir gar nicht in den Sinn gekommen.

     

    Vielen Dank

    Markus

    Mittwoch, 19. April 2017 13:09