Startseite: Multimedia Blog > Admin > Powershell Script – ActiveDirectory Benutzer in Gruppe zuweisen

Powershell Script – ActiveDirectory Benutzer in Gruppe zuweisen

Mehrere User aus der AD in Gruppen zuweisen. Powershell Script für AD User in bestimmte Gruppe verschieben. AD User auslesen und in csv Datei schreiben.

Mit einem Powershell Script lassen sich durch die richtigen Befehle ActiveDirectory Arbeiten schnell und einfach erledigen. Die Programmierung ist auch mit VBS möglich. Die Programmierung mit Powershell empfinde ich effektiver. Die Scripte sind kürzer und es stehen mehr Funktionen zur Verfügung. VBS wird von Microsoft nicht weiterentwickelt. Der neue Windows 2012 Server lässt sich komplett über Powershell bedienen. Die Core Installation ist dafür ausreichend, so wie es bei den Linux Systemen schon länger möglich ist. Ein Linux System lässt sich komplett ohne grafische Oberfläche (GUI) installieren und ist über die Shell administrierbar.

Ich möchte Ihnen mit einem Powershell Script zeigen, wie Sie Nutzer aus einer Organisationseinheit (OU) auslesen und die Werte in eine csv Datei schreiben. Diese csv Datei kann über Powershell eingelesen werden. Die Nutzer aus der csv Datei können Sie dann einer bestimmten Gruppe zuweisen.

Powershell Script – AD User auslesen und einer Gruppe zuweisen

Um richtig mit Powershell arbeiten zu können, sollte Ihre Domäne auf Windows 2008 Domänencontroller (oder höher) basieren. Mit Windows 2003 Domänencontroller können nicht alle Powershell Funktionen genutzt werden. Es fehlen die entsprechenden Module.

Kommentare im Script sind durch „#“ gekennzeichnet. Das Script müssen Sie nur etwas an Ihre Umgebung anpassen. Es gibt viele Möglichkeiten das Powershell Script aufzubauen. Meine wird nicht die beste oder effektivste Lösung sein, aber sie funktioniert.

 

#Importiert die AcitveDirectory Module
Import-module ActiveDirectory
$ADSearch = New-Object System.DirectoryServices.DirectorySearcher($ADRoot)
$ADSearch.SearchRoot=“LDAP://OU=Test,OU=Users,OU=Users and Groups,DC=Company,DC=local“ #Eigene Domäne eintragen

$ADSearch.Filter = „(&(objectClass=user)(objectCategory=person))“
# Schreibt das Wort “samaccountname” (erste Zeile und Spalte) in die csv Datei
Write-Output „samaccountname“ | out-file „C:\Daten\ TEST_OU.csv“ –append

foreach($acc in $ADSearch.FindAll()){

#User Attribute die ausgelesen werden sollen
$name = $acc.properties.displayname
$account = $acc.properties.samaccountname
$check = $acc.properties.distinguishedname
$lastLogon = $acc.properties.lastlogontimestamp

#Jeder User mit dem samaccountname wird in die csv Datei geschrieben
„$account“ | out-file „C:\Daten\ TEST_OU.csv“ -append

}

#Funktion User aus cvs Datei auslesen und AD Gruppe zuweisen
$adGroup = „TEST_GROUP“
Import-Csv „C:\Daten\ TEST_OU.csv“ | ForEach-Object {
$samAccountName = $_.“samAccountName“
Add-ADGroupMember $adGroup $samAccountName;
Write-Host „- „$samAccountName“ added to „$adGroup
write_log „$samAccountName added to $adGroup“

}

###################################
#Funktion Logfile schreiben
###################################

$Logfile = „C:\Daten\TEST_OU_LOG.txt“
function write_log ($Inhalt)

{

$FileExists = Test-Path $LogFile
$DateNow = Get-Date -Format „dd.MM.yyyy HH:mm“
$FileInp = $DateNow + ‚ | ‚ + $Inhalt
If ($FileExists -eq $True){
Add-Content $LogFile -value $FileInp

} else {

New-Item $Logfile -type file
Add-Content $LogFile -value $FileInp

}

}



Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.