none
Generate new employee number as 1 + the highest number RRS feed

  • Question

  • in active directory I want to be able find the highest value of the Employee Number Field then simply add 1 for the next new employee.

    So far this is what I have come up with.

    $Users = Get-ADUser -SearchBase "OU=Companies,DC=triangle,DC=com" -Filter 'EmployeeNumber -like "*"' -Properties EmployeeNumber
    
            #$Users | Select EmployeeNumber
    
            [int32]$FindMaxIdUsed = 0
            foreach ($UserIDs in $Users)
            {
                If ($UserIDs.EmployeeNumber -gt $FindMaxIdUsed)
                {
                    $FindMaxIdUsed = $UserIDs.EmployeeNumber
                }
            }
    
            $NextEmployeeNumber = $FindMaxIdUsed + 1

    This has worked great, until I got to a number higher than 9... it keeps looping giving me the number 10 because it is only finding the number 9. What am I doing wrong.

    Wednesday, April 20, 2016 6:06 PM

Answers

  • [int]$currentNumber = (Get-ADUser -Filter "EmployeeNumber -like '*'" -Properties EmployeeNumber -SearchBase 'OU=Companies,DC=triangle,DC=com' | 
        Sort [int]EmployeeNumber -Descending | 
            Select-Object -First 1).EmployeeNumber
    
    $freeNumber = $currentNumber + 1
    
    $freeNumber


    Wednesday, April 20, 2016 6:15 PM
  • the -like "*" only specifying 1 character
    Wednesday, April 20, 2016 6:09 PM

All replies

  • the -like "*" only specifying 1 character
    Wednesday, April 20, 2016 6:09 PM
  • [int]$currentNumber = (Get-ADUser -Filter "EmployeeNumber -like '*'" -Properties EmployeeNumber -SearchBase 'OU=Companies,DC=triangle,DC=com' | 
        Sort [int]EmployeeNumber -Descending | 
            Select-Object -First 1).EmployeeNumber
    
    $freeNumber = $currentNumber + 1
    
    $freeNumber


    Wednesday, April 20, 2016 6:15 PM
  • the -like "*" only specifying 1 character

    I should mention that this isn't going to cause a problem:

    [int]$currentNumber = (Get-ADUser -Filter "EmployeeNumber -like '*'" -Properties EmployeeNumber | 
        Sort [int]EmployeeNumber -Descending | 
            Select-Object -First 1).EmployeeNumber
    
    $freeNumber = $currentNumber + 1
    
    $freeNumber
    
    11


    Wednesday, April 20, 2016 6:22 PM
  • You're correct. * is a valid wildcard for multiple characters. ? is the single character.

    would it be because it was enumerating the ID's as:

    9

    8

    7

    6

    5

    4

    3

    2

    1

    10

    Wednesday, April 20, 2016 6:26 PM
  • You're correct. * is a valid wildcard for multiple characters. ? is the single character.

    would it be because it was enumerating the ID's as:

    9

    8

    7

    6

    5

    4

    3

    2

    1

    10

    Yep, that's why I have a cast in the sort.


    Wednesday, April 20, 2016 6:27 PM
  • The employeeNumber attribute is a string, so "2" is greater than "10" (lexicographical sort).

    Richard Mueller - MVP Enterprise Mobility (Identity and Access)

    Wednesday, April 20, 2016 8:04 PM
    Moderator
  • Now the problem is it is only giving me the number 11. as a responce...

        function Get-EmployeeNumber
        {
    
            [int]$currentNumber = (Get-ADUser -Filter "EmployeeNumber -like '*'" -Properties EmployeeNumber -SearchBase 'OU=Companies,DC=triangle,DC=com' | 
                Sort [int]EmployeeNumber -Descending | 
                    Select-Object -First 1).EmployeeNumber
    
            $NextEmployeeNumber = $currentNumber + 1
    
            [string]$strNextEmployeeNumber = $NextEmployeeNumber.ToString()
    
            Write-Debug $strNextEmployeeNumber
    
            Return $strNextEmployeeNumber
        }

       Get-ADUser -Filter "EmployeeNumber -like '*'" -Properties EmployeeNumber -SearchBase 'OU=Companies,DC=triangle,DC=com' | 
                Sort [int]EmployeeNumber -Descending | Select GivenName,EmployeeNumber

    GivenName                                                                       EmployeeNumber                                                                 
    ---------                                                                       --------------                                                                 
    Tobias                                                                          10                                                                             
    Teressa                                                                         11                                                                             
    Sidney                                                                          10                                                                             
    Scott                                                                           10                                                                             
    Sara                                                                            10                                                                             
    Samantha                                                                        9                                                                              
    Ryan                                                                            10                                                                             
    Ronald                                                                          10                                                                             
    Rebecca                                                                         10                                                                             
    Ralph                                                                           11                                                                             
    Ralph                                                                           10                                                                             
    Nate                                                                            10                                                                             
    Morgan                                                                          10                                                                             
    Mike                                                                            2                                                                              
    Michael                                                                         1                                                                              
    Meika                                                                           7                                                                              
    Mark                                                                            3                                                                              
    Marie                                                                           6                                                                              
    Lori                                                                            10                                                                             
    Lance                                                                           10                                                                             
    Kim                                                                             10                                                                             
    Karen                                                                           10                                                                             
    Karen                                                                           10                                                                             
    Kaitlyn                                                                         4                                                                              
    Jeremy                                                                          11                                                                             
    Jamaria                                                                         11                                                                             
    Holly                                                                           8                                                                              
    Geovanni                                                                        11                                                                             
    Erika                                                                           10                                                                             
    Denette                                                                         10                                                                             
    Cristine                                                                        10                                                                             
    Christina                                                                       10                                                                             
    Chad                                                                            10                                                                             
    Briana                                                                          10                                                                             
    Brady                                                                           10                                                                             
    Bob                                                                             10                                                                             
    Bob                                                                             11                                                                             
    Benjamin                                                                        10                                                                             
    Benjamin                                                                        10                                                                             
    Ashley                                                                          10                                                                             
    Alex                                                                            11  

    [int]$CurrentNumber = (Get-ADUser -Filter "EmployeeNumber -like '*'" -Properties EmployeeNumber -SearchBase 'OU=Companies,DC=triangle,DC=com' | 
                Sort [int]EmployeeNumber -Descending | 
                    Select-Object -First 1).EmployeeNumber

            $CurrentNumber
    10

    I do not understand why it is just not counting 1 higher than the highest number.

    Thursday, May 12, 2016 10:20 PM
  • Here is my current test lets hope it works correctly.

    [array]$CurrentNumber = (Get-ADUser -Filter "EmployeeNumber -like '*'" -Properties EmployeeNumber -SearchBase 'OU=Companies,DC=triangle,DC=com' | 
                Sort [int]EmployeeNumber -Descending | 
                    Select-Object ).EmployeeNumber
    
          [Int]$EmployeeNumber = ($CurrentNumber | measure -Maximum).Maximum
    
    $EmployeeNumber = $EmployeeNumber + 1

    Thursday, May 12, 2016 10:48 PM