Home > Blockchain >  Import Data issue from CSV to AD
Import Data issue from CSV to AD

Time:11-18

I have a problem importing phone numbers from a CSV file based on email addresses to Active directory using a PowerShell script. The table contains:

mail;telephoneNumber
[email protected];88888888
[email protected];99999999

here’s the code I’m running but it shows me an error message, or I don’t see why there’s this message:

Import-module ActiveDirectory 
Import-CSV E: scripts list.csv | 
     ForEach-Object {
         Write-Host "telephoneNumber $($_.telephoneNumber)"
         Get-ADUser -Filter "mail -like '$($_.mail)'" | 
     Set-ADUser -telephoneNumber $_. telephoneNumber}

Here is the error message:

telephoneNumber
Set-ADUser: Unable to find a parameter corresponding to the name «telephoneNumber».
Character E: scripts employeeid.ps1:6: 14
    Set-ADUser -telephoneNumber $_. telephoneNumber}
                  ~~~~~~~~~~~~~~~~
      CategoryInfo   : InvalidArgument: (:) [Set-ADUser], ParameterBindingException
      FullyQualifiedErrorId: NamedParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.SetADUser

NB: I am a beginner in the subject

Thank you well in advance for your help


I tried this code too but still the same problem.

Import-module ActiveDirectory 
             
Import-CSV "E:\scripts\liste.csv" | % { 

$telephoneNumber = $_.telephoneNumber 

$mail= $ail_.m
Set-ADUser $telephoneNumber -mail $mail

}

CodePudding user response:

The LDAP property telephoneNumber is known as OfficePhone in PowerShell and LDAP property mail has a PowerShell equivalent called EmailAddress.
Cmdlet Set-ADUser does not have a parameter called telephoneNumber, but it does have OfficePhone, so a rewrite of your code would be

Import-Module ActiveDirectory 
Import-Csv -Path 'E:\scripts\list.csv' | ForEach-Object {
    $user = Get-ADUser -Filter "mail -eq '$($_.mail)'" # or use PS equivalent 'EmailAddress'
    if ($user) { 
        Write-Host "Setting telephoneNumber $($_.telephoneNumber) for $($user.Name)"
        $user | Set-ADUser -OfficePhone $_.telephoneNumber

        # if you do want to use LDAP property telephoneNumber, you can use below
        # $user | Set-ADUser -replace @{telephoneNumber = $($_.telephoneNumber)}
    }
    else {
        Write-Warning "Could not find user with EmailAddress $($_.mail)"
    }
}

P.S. you made some typos when posting:

  • E: scripts list.csv is missing the backslashes
  • $_. telephoneNumber has a space between the dot and the property name
  • Related