AD Abfrage nach Nachname mit CSV?

1 Antwort

Dafür brauchst du nur folgende Cmdlets:

  • Get-Content
  • Eine foreach Schleife
  • Get-Aduser
  • Eine if-else Condition
  • Add-Content

Wenn du es effizient gestaltest sind das weniger als 20 Zeilen Code

Woher ich das weiß:Berufserfahrung – arbeite seit vielen Jahren in der IT
timos000 
Fragesteller
 31.03.2022, 11:31

Hallo, vielen Dank! Hört sich gar nicht mal so kompliziert an.. :D Ich habe aber leider keine Ahnung wie man so etwas anfängt. Stell dir einen Studenten vor, dem die Aufgabe gestellt wurde zu so etwas ein PowerShell Script zu recherchieren & keine Ahnung hat wie er loslegen soll... :D

0
TheFamousSpy  31.03.2022, 11:35
@timos000

So ungefähr hab ich das auch.

Mit den Infos sollte man als StudentIn sich alles weitere zusammensuchen können. Studieren bedeutet eben auch sich Inhalte selbstständig erarbeiten zu können.

Hab die Punkte sogar in der richtigen Reihenfolge aufgeschrieben.

Zu jedem Cmdlet gibt es übrigens von Microsoft eine Dokumentation (entweder via PowerShell mit Get-Help abrufen oder via Google auf der Microsoft Seite).

Mein persönlicher Tipp noch: immer auf Englisch suchen, dann findest du so unfassbar viele Infos, wahrscheinlich sogar ein fertiges Skript für die Aufgabe (was ich aber nicht empfehlen würde, dann lernst du ja nix daraus)

0
TechPech1984  31.03.2022, 11:38
@timos000

naja, stell dir einen studenten vor , der halt erstmal powershell lernen sollte und wie man entsprechend aktive directory querys erzeugt.

Normal hat man da schon seinen Schein für AD Administrator .

Kann es sein das Du überfordert bist. Weil die Angaben reichen aus um sich das aus dem Netz zusammenzu friemeln , wenn man halt Programmieren bzw Scripten kann . Der Rest ist Auftragsarbeit .

0
timos000 
Fragesteller
 31.03.2022, 14:13
@TheFamousSpy

Ich bin kein Informatikstudent - wurde quasi nur darum gebeten das einmal zu versuchen :)

Bin jetzt hier:

Import-Module ActiveDirectory

$Users = Import-Csv -Path "I:\Sonstiges\schltim\Onboard_1.csv"

ForEach ($User in $Users) {

  $FirstName = $User.FirstName

  $LastName = $User.LastName

  Get-ADUser -Filter { (givenName -eq $FirstName) -and (surname -eq $LastName) }

Export-Csv -Path "I:\Sonstiges\schltim\check1.csv"}

Allerdings habe ich Probleme mit der If-Else Condition und AddContent. Wenn ich es richtig verstanden habe muss ich damit sagen, was passiert wenn der User gefunden wird und was wenn nicht - korrekt?

0
TheFamousSpy  31.03.2022, 16:17
@timos000

Das schaut schon recht gut aus.


Import-Module ActiveDirectory

$Users = Import-Csv -Path "I:\Sonstiges\schltim\Onboard_1.csv"

ForEach ($User in $Users)
{

      $FirstName = $User.FirstName
      $LastName = $User.LastName

    # Wenn ein User gefunden wird, wird er in der Variable gespeichert, ansonsten bleibt diese leer
     $FoundUser = Get-ADUser -Filter { (givenName -eq $FirstName) -and (surname -eq $LastName) }


    # Wenn Variable nicht leer, dann mache das
    if ($FoundUser)
    {
       # Damit definiere ich wie die Zeile in der CSV Datei ausschauen soll. Habe jetzt den Strichpunkt als Trennzeichen genommen. Musst du evt. anpassen
       $Output = "$FirstName $LastName ; found"

       # Füge die Zeile der Zieldatei zu. Diese Datei muss bereits vorhanden sein
       Add-Content -Path "I:\Sonstiges\schltim\check1.csv" -Value $Output
    }

    # Wenn nicht, dann mache das (also wenn die Variable leer ist)
    else
    {
       # dasselbe wie oben nur mit "not found"
       $Output = "$FirstName $LastName ; not found"
       Add-Content -Path "I:\Sonstiges\schltim\check1.csv" -Value $Output
    }
}

Ich habe ergänzt was dir gefehlt hat und mit Kommentaren versehen (Zeilen die mit Raute beginnen). Habe den Code nicht getestet, eventuell musst du noch etwas Finetuning betreiben.

Das ist halt das absolute minimum, wenn man das beispielsweise produktiv verwenden würde, dann würde man vorab noch gewisse Checks einbauen, beispielsweise sicherstellen, ob die Datei vorhanden ist, in welche das Resultat ausgegeben werden soll. Aber das sind Feinheiten.

0