AD User List with Powershell

Ich habe mich in letzter Zeit ein bisschen mit der Windows Powershell auseinander gesetzt und ein Script geschrieben um alle User-Objekte aus einer AD in eine Liste (.csv) zu exportieren.

Zum Ablauf:

  1. Tabellen Header mit Variablen Splitter setzen
  2. Momentane Domain abfragen und in eine Variable speichern
  3. Searcher initialisieren und starten
  4. mit einer For Schlaufe durch alle Objekte und die Informationen in einen String speichern
  5. String in ein .csv abspeichern

Hier das Script um aus der AD eine aktuelle User Liste herauszubekommen:
$splitter = "|"
$outtext = "cn" + $splitter + "description" + $splitter + "lastLogoff" + $splitter + "lastLogon" + $splitter + "logonCount" + $splitter + "sAMAccountName" + $splitter + "whenChanged" + $splitter + "AccountDisabled`n"

$dom = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
$root = $dom.GetDirectoryEntry()

$searcher = [System.DirectoryServices.DirectorySearcher]$root
$searcher.Filter = "(objectcategory=user)"
$searcher.PageSize = 10000

$userlist = $searcher.FindAll()

foreach ($user in $userlist)
{

$de = $user.GetDirectoryEntry()

$lastLogon = [System.DateTime]::FromFileTime([String]$user.Properties.lastlogontimestamp).ToString("dd.MM.yyyy")
$lastLogoff = [System.DateTime]::FromFileTime([String]$user.Properties.lastlogofftimestamp).ToString("dd.MM.yyyy")

$outtext += [String]$de.cn + $splitter + [String]$de.description + $splitter + [String]$lastLogoff + $splitter + [String]$lastLogon + $splitter + [String]$de.logonCount + $splitter + [String]$de.sAMAccountName + $splitter + [String]$de.whenChanged + $splitter + [String]$de.PsBase.InvokeGet("AccountDisabled") +"`n"
}
Out-File -FilePath "aduserlist.csv" -InputObject $outtext
Write-Host "finished!"