Tags

Howto (51) Free Software (35) Powershell (33) Windows Server (23) AD (16) Hyper-V (16) Exchange (13) Office (13) Group Policy (10) Windows Server 2012 (9) Scripts (7) Symantec BE (5) Windows 8 (5) Cisco (4) TMG (4) Terminal Server (4) Cluster (3) HP (3) RDS (3) UAG (3) Citrix (2) DC (2) DNS (2) IE10 (2) OpenID (2) PKI (2) SCVMM (2) Windows Live (2) iLO (2) Backup (1) DPM (1) Fileserver (1) IE (1) SQL; DPM (1) Security (1) Sharepoint (1) Switch (1) VMWare (1) Veeam (1)

dinsdag 2 juli 2013

AD gebruikers aanmaken aan de hand van een CSV bestand en een Powershell script

Stappen:

  1. Pas het Excel bestand aan en sla deze op als CSV
  2. Converteer CSV bestand naar UTF8 formaat
  3. Gebruik Powershell script om de gebruikers aan te maken
  

Stap 1:

 
In de eerste regel van Excel staan de kolomnamen die ook in het Powershell script terug komen.
De Excel sheet heb ik enigszins moeten aanpassen zodat er kolommen ontstonden met bijvoorbeeld: gebruikersnaam  conventie (voorletter.geboortenaam) en DisplayName
 
Hier de door mij gebruikte eerste Excel rij:
 
PERSONEELSNUMMER;GivenName;1ste_letter_GN;Gebruikersnaam_tussenvoegsel;Geboorte_SN;Gebruikersnaam_met_spaties;Gebruikersnaam;UPN_Suffix;UPN;Title;Mobiel;Afdeling;Locatie;Preffered_SN;Space;DisplayName;EMAILADRES;Password
 
In onderstaand blog kun je zien hoe je een random wachtwoord kunt genereren:
 
 

Stap 2:

 
Het Powershell script maakt gebruik van het import-csv commando, echter importeert deze de csv in ASCII formaat.
Dat kan onderstaand resultaat opleveren:
 
 
Het CSV bestand zal daarom eerst geconverteerd moeten worden naar UTF8 formaat.
Dat kan gelukkig makkelijk doordat het Get-Content (cat) commando bestanden uitleest in UTF8 formaat.
 
Hierdoor hoef je alleen de output weg te schrijven naar een nieuw csv bestand, dat dan in UTF8 formaat is.
 
PS C:\SCRIPTS\CADU>cat NewUsers.csv > NewUsers2.csv
 
 

Stap 3:

 
Gebruik CreateADUsers.ps1 en pas deze eventueel aan:
 
 
# CreateADUsers.ps1
Set-ExecutionPolicy Unrestricted
Import-Module ActiveDirectory

 $csvpath = "c:\Scripts\CADU\NewUsers.csv"
$date = Get-Date
$logfile = "c:\Scripts\CADU\create_AD_users.log"
$Bedrijf = "TBedrijf"
$i=0
 
 # Specify parent container for all new users.
$OU =  "OU=Users,OU=TBedrijf,DC=test,DC=local"

 Import-Csv $csvpath -Delimiter:";" |  ForEach-Object {
$sam = $_.Gebruikersnaam
     Try   { $exists = Get-ADUser -LDAPFilter "(sAMAccountName=$sam)" }
     Catch { }
     If(!$exists)
     {
     $Password = $_.Password
New-ADUser $sam -GivenName $_.GivenName -Surname $_.Preffered_SN -DisplayName $_.DisplayName -Company $Bedrijf -Department $_.Afdeling -Mobilephone $_.Mobiel -Title $_.Title -Office $_.Locatie -EmailAddress $_.EmailAdres -UserPrincipalName $_.UPN -passthru |
ForEach-Object {
$_ | Set-ADAccountPassword -Reset -NewPassword (ConvertTo-SecureString -AsPlainText $Password -Force)
$_ | Enable-ADAccount }

 # Set an ExtensionAttribute
       $dn  = (Get-ADUser $sam).DistinguishedName
       $ext = [ADSI]"LDAP://$dn"
       $ext.SetInfo()
       Move-ADObject -Identity $dn -TargetPath $OU

       $newdn = (Get-ADUser $sam).DistinguishedName
       Rename-ADObject -Identity $newdn -NewName $_.DisplayName

       $output  = $date.ToString() + " CREATED - Naam: " + $_.DisplayName + " (login: "
       $output += $_.UPN + " / " + $_.Password + ")"
       $output | Out-File $logfile -append
      }
      Else
      {
       $output  = $date.ToString() + " SKIPPED - Naam: " + $_.DisplayName + " (inlognaam: "
       $output += $_.UPN + ")"
       $output | Out-File $logfile -append
}
"----------------------------------------" + "`n" | Out-File $logfile -append
}
 
 
Persoonlijk vind ik het makkelijk om Powershell ISE in Administrative mode op te starten en het script in te laden.
 
 
 
 
 
 

Geen opmerkingen:

Een reactie posten