Only Numeric Characters and Symbols Updating

Tagged: , ,

This topic contains 3 replies, has 2 voices, and was last updated by Profile photo of Dave Wyatt Dave Wyatt 2 years, 1 month ago.

  • Author
    Posts
  • #19834
    Profile photo of Allen Rohl
    Allen Rohl
    Participant

    Hello,

    I have a strange issue with importing AD attributes from a .CSV file. It was working a couple of days ago. Now, when importing the data, it looks like all data is going through (no errors) but only the rows from the .csv file with numerals and symbols (#) are importing. String data like names, initials and home addresses and telephone numbers and not importing.

    I'm using quest active roles free management shell for interaction with AD and the powershell ISE for testing.

    Again, this was working a couple of days ago.

  • #19835
    Profile photo of Dave Wyatt
    Dave Wyatt
    Moderator

    Does the file look okay when you open it in Notepad? This one's going to be hard to troubleshoot without being able to see the CSV file and the code that's reading it.

    • #19837
      Profile photo of Allen Rohl
      Allen Rohl
      Participant

      The code and .csv file is attached. I put together the code with help from other moderators in this forum.

  • #19843
    Profile photo of Dave Wyatt
    Dave Wyatt
    Moderator

    I'm not sure if this is the only problem with this code, but one thing that jumps out at me is that you're constantly overwriting the value of $Params.ObjectAttributes with new hashtables. When that happens, only the last value to be assigned will wind up getting passed on to Set-QADUser, which may be the problem here. Try this revision:

    Add-PSSnapin -Name Quest.ActiveRoles.ADManagement
    $OU = "RussellReynolds.com/Users and Workstations"
    $userinfo = Import-csv -path "C:\xxHR_EMPLID_EXP20141017.csv" -Delimiter "|"
    
    foreach ($user in $userinfo) {
        $Params = @{}
        $objectAttributes = @{}
    
        if ($user.manager) {
            $Params.manager = Get-QADUser -SearchRoot $OU -Sizelimit 0 -ObjectAttributes @{employeeID=$user.manager} |
            Select-Object -ExpandProperty DN
        }
    
        if ($user.assistant) {
            $assistant = Get-QADUser -SearchRoot $OU -Sizelimit 0 -ObjectAttributes @{employeeID=$user.assistant} |
            Select-Object -ExpandProperty DN
            $objectAttributes.assistant = $assistant
        }
    
        if ($user.extensionAttribute12) {
            $extensionAttribute12 = $user.extensionAttribute12
            $objectAttributes.extensionAttribute12 = $extensionAttribute12
        }
    
        if ($user.homePostalAddress) {
            $homePostalAddress = $user.homePostalAddress
            $objectAttributes.homePostalAddress = $homePostalAddress
        }
    
        if ($user.generationQualifier) {
            $generationQualifier = $user.generationQualifier
            $objectAttributes.generationQualifier = $generationQualifier
        }
    
        if ($user.middleName) {
            $middleName = $user.middleName
            $objectAttributes.middleName = $middleName
        }
    
        if ($user.sn) {
            $sn = $user.sn
            $Params.sn = $sn
        }
    
        if ($user.telephoneNumber) {
            $telephoneNumber = $user.telephoneNumber
            $Params.telephoneNumber = $telephoneNumber
        }
    
        if ($user.ipPhone) {
            $ipPhone = $user.ipPhone
            $objectAttributes.ipPhone = $ipPhone
        }
    
        if ($user.facsimileTelephoneNumber) {
            $facsimileTelephoneNumber = $user.facsimileTelephoneNumber
            $Params.facsimileTelephoneNumber = $facsimileTelephoneNumber
        }
    
        if ($user.mobile) {
            $mobile = $user.mobile
            $Params.mobile = $mobile
        }
    
        if ($user.homePhone) {
            $homePhone = $user.homePhone
            $Params.homePhone = $homePhone
        }
    
        if ($user.department) {
            $department = $user.department
            $Params.department = $department
        }
    
        if ($user.extensionAttribute13) {
            $extensionAttribute13 = $user.extensionAttribute13
            $objectAttributes.extensionAttribute13 = $extensionAttribute13
        }
    
        if ($objectAttributes.Count -gt 0)
        {
            $Params.objectAttributes = $objectAttributes
        }
    
        Get-QADUser -SearchRoot $OU -Sizelimit 0 -ObjectAttributes @{employeeID=$user.EmployeeID} |
        Set-QADUser @Params
    }
    

    Here, you're only assigning a value to $Params.ObjectAttributes once, with the hashtable that was built up in the $objectAttributes variable throughout the rest of the code.

You must be logged in to reply to this topic.