Hi, Need help , updating data in AD from a Csv file
Thank you.
Hi Denis, welcome to the forum ![]()
What sort of help do you need?
Please post the script you’re having problems with, together with any errors, and we’ll be happy to take a look at it for you and provide assistance.
When posting the script and errors, please make sure to use the </> button and paste the information where shown. This makes it easier for us to read, and to copy and paste your code. TIA.
Import-Module ActiveDirectory
$Users = Import-Csv -Path C:\Users\denbut\Desktop\darb.csv
$users = Get-ADUser -Filter * -SearchBase “LDAP://OU=_users/staff,DC=ism,DC=lt”
Get-Content -Path C:\Users\denbut\Desktop\test.csv | ft
foreach
($dataRecord in $datasource){
$cn=$dataRecord.FirstName + " " + $dataRecord.LastName
$sAMAccountname=$dataRecord.FirstName + “.” + $dataRecord.LastName
$givenName=$dataRecord.FirstName
$sn=$dataRecord.LastName
$sAMAccountName=$sAMAccountName.ToLower()
$displayName=$sn +", " + $givenName
$userPrincipalName=$sAMAccountName + “@ism.lt”
$physicalDeliveryOfficeName=$dataRecord.office
$objuser.Put(“sAMAccountName,$sAMAccountName”)
$objuser.Put("userPrincipalName”,$userPrincipalName)
$objuser.Put(“displayname”, $displayName)
$objuser.Put(“givenNane”, $givenName)
$objuser.Put("sn”,$sn)
$objuser.Put("physicalDeliveryOfficeName”,$physicalDeliveryOfficeName)
$objuser.Put(“telephoneNumber”,$telephoneNumber)
$objuser.SetInfo()
}
problem
Get-ADUser : Directory object not found
At C:\Users\denis\Documents\Untitled11.ps1:3 char:10
- $users = Get-ADUser -Filter * -SearchBase "LDAP://OU=_users/staff,DC= …
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~- CategoryInfo : ObjectNotFound: (
[Get-ADUser], ADIdentityNotFoundException - FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.GetADUser
- CategoryInfo : ObjectNotFound: (
First, as previously requested: please use the </> button to format the code in your post. You can edit your post, you do not need to create a new one to reformat it.
Your script not only contains errors but appears to be incomplete.
$Users is being set to the contents of the darb.csv, then over written with the results from Get-ADUser on the next line.
$datasource is not defined in the script you’ve posted.
$objuser is not defined in the script you’ve posted. But there’s no need to do it that way anyway when you have the Set-ADUser cmdlet.
The error you’re getting for the Get-ADUser command is due to the way you’ve defined the -SearchBase parameter. You should not include the LDAP:// part in the string, it’s just the DN of the OU.
Can these line be successful?
$objuser. Put("sAMAccountName,$sAMAccountName")
$objuser. Put("userPrincipalName", $userPrincipalName)
$objuser. Put("displayname", $displayName)
$objuser. Įdėti ("givenNane", $givenName)
$objuser. Put("sn", $sn)
$objuser. Put("physicalDeliveryOfficeName", $physicalDeliveryOfficeName)
$objuser. Įdėti ("phoneNumber", $telephoneNumber)
$objuser. SetInfo()
And I did’t really understand about the variable $datasource ?
Now the code looks like this …
$Users = Import-Csv -Path C:\Users\denbut\Desktop\darb.csv
Get-Content -Path C:\Users\denbut\Desktop\darb.csv
$objIO=[ADSI]"LDAP://OU=ism.lt/_users/staff/staff,DC=ism,DC=lt"
Get-ADUser -Filter * -SearchBase "ou=_users/staff,dc=ism,dc=lt"
foreach($dataRecord in $datasource){
$cn=$dataRecord.FirstName + " " + $dataRecord.LastName
$sAMAccountname=$dataRecord.FirstName + “.” + $dataRecord.LastName
$givenName=$dataRecord.FirstName
$sn=$dataRecord.LastName
$sAMAccountName=$sAMAccountName.ToLower()
$displayName=$sn +", " + $givenName
$userPrincipalName=$sAMAccountName + “@ism.lt”
$objuser=$objOU.Create("user","CN="+$cn)
$physicalDeliveryOfficeName=$dataRecord.office
}
#$objuser.Put("sAMAccountName,$sAMAccountName")
#$objuser.Put("userPrincipalName”,$userPrincipalName)
#$objuser.Put(“displayname”, $displayName)
#$objuser.Put(“givenNane”, $givenName)
#$objuser.Put("sn”,$sn)
#$objuser.Put("physicalDeliveryOfficeName”,$physicalDeliveryOfficeName)
#$objuser.Put("telephoneNumber",$telephoneNumber)
#$objuser.SetInfo()
No, that won’t do what you want either.
You don’t need to use the Put() and SetInfo() methods.
Have a look at the help file for Set-ADUser it gives examples of how to use it.
Well you have a loop, that says foreach($dataRecord in $datasource) but there are no records in $datasource because you don’t assign it any value in your code. I would expect to see something like this in your script:
$datasource = Import-Csv C:\Temp\userdata.csv