Benutzerliste in Active Directory importieren - PowerShell
- Autor
- Johannes Huber
- Veröffentlicht
- Aktualisiert
- Lesezeit
- 3 Minuten

Wenn man verschiedene Systeme hat, sich einen User - Export zieht und möchte diese Benutzer in eine ActriveDirectory Gruppe füllen, sorgt dieses Script für Abhilfe. Diese Benutzerliste in Active Directory importieren geht ganz einfach mit einem PowerShell Script. Dieses kann mit mehreren Varianten wie SID, Mail oder Benutzername umgehen. Ebenfalls werden die Errors, also Fehler die auftreten per Mail verschickt.
Benutzerliste in Active Directory importieren
Diese Input Varianten sind möglich:
- Username
- Email-Adress
- User SID
Dazu müssen noch folgende Zeilen bearbeitet werden:
-
- 7-13 (User / Group / List - Settings)
- 20-24 (Mail - Settings)
-
56-73 (CSV - Settings) (Split-String, default ’;’)
-
98 (Domain - Settings)
(userimport.ps1 - Powershell)
<#
.SYNOPSIS
Benutzer Liste in AD importieren
.DESCRIPTION
Importiert Benutzer aus einer Liste in das Active Directory
.NOTES
Version: 1.0
Author: www.ITnator.net | Johannes Huber
Creation Date: 15.02.2017
.EXAMPLE
Run as administrator
#>
############################################### SCRIPT SETTINGS ##################################################
$inputfile = "C:\JOBS\input\list_sid.txt" # EVERY USER IN A NEW LINE
$logfile = "C:\JOBS\logs\list_LOG.txt" # Logfile
$groupname = "youractivedirectorygroup" # AD Group Name
$grouplocation = "OU=yourOU,OU=yourOU,DC=your,DC=domain" # AD structure
$inputtypeuser = "sid" # user = Username, mail = Mail-Adress, sid = User SID (INPUT)
$trimscv = "false" # true = file is an CSV file, false = do NOT trim file (Settings in line 57-74)
$howtotrimcsv = "0" # get first info (sid=0) (user=1) (date=6)
##################################################################################################################
############################################### MAIL SETTINGS ####################################################
$smtpServer="0.0.0.0" # yourMailserver
$from = "yourname <[email protected]>" # SENDER
$receiver = "[email protected]" # RECEIVER
$subject= "Fehler bei Datenimport" # Message subject
$textEncoding = [System.Text.Encoding]::UTF8 # text encoding
###################################################################################################################
############################################### GENERAL SETTINGS ##################################################
$date = Get-Date -format ddMMyyyy
###################################################################################################################
############################################### SCRIPT ############################################################
#IF AD-GROUP EXISTS, CREATE NEW
try {Get-ADGroup $groupname}
catch{
#CREATE AD-GROUP
NEW-ADGroup –name $groupname –groupscope Global –path $grouplocation
}
#CLEAR AD-GROUP
Get-ADGroupMember $groupname | ForEach-Object {Remove-ADGroupMember $groupname $_ -Confirm:$false}
#READ AD-USER FROM FILE
$inputusers = Get-Content $inputfile
#ADD USER TO AD-GROUP
foreach ($line in $inputusers)
{
#IS USER DISABLED
If($trimscv -eq "true"){
$isdisabled = $line.split(';')[4]
if($isdisabled -ne ""){
continue #nextline
}
#IS USER DISABLED
If($trimscv -eq "true"){
$isdisabled = $line.split(';')[5]
if($isdisabled -ne ""){
continue #nextline
}
}
}
#TRIM FILE
If($trimscv -eq "true"){
$line = $line.split(';')[$howtotrimcsv]
}
#TRY ADD USER AND WRITE LOG
Try
{
#IF INPUT = user -> ADD USER
If($inputtypeuser -eq "user"){
Add-ADGroupMember $groupname $line -ErrorAction Stop
add-content -path $logfile -value "User successfull added: $line"
}
#IF INPUT = mail -> ADD MAIL
If($inputtypeuser -eq "mail"){
$line = $line.Trim()
$linemail = Get-ADUser -Filter {EmailAddress -like $line} -Properties EmailAddress | Select samaccountname | ft -HideTableHeaders | out-string
$linemail = $linemail.Trim('')
Add-ADGroupMember $groupname $linemail -ErrorAction Stop
add-content -path $logfile -value "User successfull added: $line"
}
#IF INPUT = sid -> ADD SID
If($inputtypeuser -eq "sid"){
$line = $line.trim()
$objSID = New-Object System.Security.Principal.SecurityIdentifier("$line")
$objUser = $objSID.Translate([System.Security.Principal.NTAccount])
$objUser = $objUser.value.ToString()
$objUser = $objUser.TrimStart('YOURDOMAIN') # yourdomain\username
$objUser = $objUser.TrimStart('\')
Add-ADGroupMember $groupname $objUser -ErrorAction Stop
add-content -path $logfile -value "User successfull added: $objUser"
}
}
Catch #ON ERROR WRITE LOG
{
$ErrorMessage = $_.Exception.Message
$FailedItem = $_.Exception.ItemName
add-content -path $logfile -value "User $line NOT added. $errormessage"
# Send Email Message
$body = "User $line NOT added. $errormessage
LOGFILE: \\yourserver\logs"
Send-Mailmessage -smtpServer $smtpServer -from $from -to $receiver -subject $subject -body $body -bodyasHTML -priority High -Encoding $textEncoding
}
}
#IMPORT DONE
$date = Get-Date -format d
add-content -path $logfile -value "#########################################################################################################"
add-content -path $logfile -value "############################################## IMPORT DONE ##############################################"
add-content -path $logfile -value "############################################## $date ##############################################"
add-content -path $logfile -value "#########################################################################################################"
:-)

0 Kommentare