Two day ago I published an article about how to get User Information using the Get-ADUSER cmdlet and today I’ll show how you can modify users Information using the SET-ADUSER.
The SET-ADUSER In another Core cmdlet In the Active Directory PowerShell Module and It’s very powerful when there Is a need to modify multiple users.
In this article I’ll show how I’m changing multiple Active directory Users attributes using PowerShell query.
As you will see below, I’m going to add a code to all my Nano Server admins using a query that will search for all users with the tittle Nano Admins.
If the title Is correct a code40 value will added to the admindescription attribute.
Get-ADUser -filter "title -like 'Nano admins'" | set-aduser -add @{"admindescription"="Code40"}
Get-ADUser -filter "title -like 'Nano admins'" -properties * | select name, title
This how the user properties looks like after the change.
To reverse the change type
Get-ADUser -filter "title -like 'Nano admins'" | set-aduser -remove @{"admindescription"="Code40"} -verbose
You can also use a .CSV file to make changes to a number of users In the file as seen below:
Import-Csv .\users.csv | foreach{Set-ADUser $_.user -Title "Nano Admin" -PassThru } | ft
This is how the .CSV file looks like
And If I open the properties of the users I can see the new Job Title
And below you will see another flavour of the cmdlet, Where I get all the users with Nano Admin title and set their description name to Administrator
Get-ADUser -Filter 'Title -like "Nano Admin"' | Set-ADUser -description "administrator"
In the example below I’ll show you the core function of the Set-Module which they are:
Add details to users
Remove details
Clear (reset , set to null)
Replace (change existing details)
I can also replace \ change user details
Get-ADUser -Filter 'Title -like "Nano Admin"' | Set-ADUser -Replace @{description="Enginer";department="42"} Get-ADUser -Filter 'Title -like "Nano Admin"' -Properties * | select name,title,description,department
To remove details from multiple users:
Get-ADUser -Filter 'Title -like "Nano Admin"' | Set-ADUser -remove @{description="Enginer";department="42"} Get-ADUser -Filter 'Title -like "Nano Admin"' -Properties * | select name,title,description,department
And to add value to multiple users type:
Get-ADUser -Filter 'Title -like "Nano Admin"' | Set-ADUser -add @{description="Enginer";department="42"} Get-ADUser -Filter 'Title -like "Nano Admin"' -Properties * | select name,title,description,department
To clear Value and set them to Null use the code below:
Get-ADUser -Filter 'Title -like "Nano Admin"' | Set-ADUser -clear description,department Get-ADUser -Filter 'Title -like "Nano Admin"' -Properties * |select name,description,department
And In the ultimate code below, I’m setting the mail attrivute of all the users In my Dev OU to be Firstname.Lastname@test.local
Get-ADUser -Filter 'Name -like "*"' -SearchBase 'OU=dev,DC=test,DC=local' -Properties * | % {Set-ADUser $_ -email ($_.GivenName + '.' + $_.Surname +"@test.local")} Get-ADUser -Filter 'Name -like "*"' -SearchBase 'OU=dev,DC=test,DC=local' -Properties * | select name,mail
And In my final and example I’m setting \ adding a primary SMTP address based on Firstname.Lastname@test.local
Get-ADUser -Filter 'Name -like "*"' -SearchBase 'OU=dev,DC=test,DC=local' -Properties * | % {Set-ADUser $_ -add @{proxyAddresses="SMTP:"+ $_.GivenName + '.' + $_.Surname +"@test.local"}} Get-ADUser -Filter 'Title -like "Nano Admin"' -Properties * | select name,proxyAddresses