gabebu
Goto Top

Powershell Active Directory: Nur einen Benutzername ausgeben!

Hallo Zusammen

Mein Script wächst und wächst. Ich kann jetzt schon Benutzer per CSV hinzufügen mit richtigen Passwort und aktiviert. Der nächste Schritt wäre, das ich den Benutzer aus der AD direkt vergleiche mit den Einträgen im CSV und den Nutzer nur erstelle, wenn er in der Liste nicht schon vorhanden ist. Also anderst gesagt so:
Import-Module ActiveDirectory;
$Zaehler = 0
$Import = @(Import-CSV C:\users\administrator\desktop\test.csv)
$Reihenzaehler = $Import | Measure-Object;
$Benutzername =  $Import[$Zaehler].sAMAccountName;


do
{ 
$ADAbfrage = get-aduser -Identity $Benutzername| FT SamAccountName -A;

$Benutzername
$ADAbfrage
 if ($Benutzername -ne $ADAbfrage )
{
csvde -i -k -f C:\users\Administrator\Desktop\test.csv  
Set-AdAccountPassword -Identity $Benutzername -PassThru -Reset -Newpassword (ConvertTo-Securestring $Import[$Zaehler].sAMAccountName -Asplaintext -force)
$Zaehler = $Zaehler + 1; 

write-host "pip"  
}
elseif ($Benutzername -eq  $ADAbfrage)
{
 write-host "nix da, gibts schon";  
}

}while ($Reihenzaehler > $Zaehler  ) 
Nur leider erkennt er den Benutzername in der CSV immer als "anderst", da das Format von Get-ADUser anderst ist. Wie kann in den Nutzernamen einfach nur als eine einzelne Textzeile ausgeben ohne irgendeine Formatierung?

Besten Dank für eure Antworten.

Gruss

gabeBu

Content-Key: 230823

Url: https://administrator.de/contentid/230823

Ausgedruckt am: 28.03.2024 um 08:03 Uhr

Mitglied: Rolf14
Rolf14 24.02.2014 um 09:41:56 Uhr
Goto Top
Hey schau hier mal rein vielleicht hilft dir das.

http://social.technet.microsoft.com/Forums/de-DE/73a58cfb-a60a-4cef-b59 ...

Ansonsten noch was:

Wenn du das Script später über deine AD laufen lässt wird er ja meckern das die User schon vorhanden sind. Wenn du dann was bearbeiten willst oder ändern macht sich ldif besser als csv.

LG
Mitglied: colinardo
colinardo 24.02.2014 aktualisiert um 10:21:33 Uhr
Goto Top
Wie kann in den Nutzernamen einfach nur als eine einzelne Textzeile ausgeben ohne irgendeine Formatierung?
get-aduser -Identity $Benutzername | select -ExpandProperty SamAccountName
und noch als Hinweis, Ausgaben mit format-table / format-list etc. machen aus Objekten einen String mit Spaltenüberschriften, für das Weiterverarbeiten in Schleifen sollte man dies unbedingt vermeiden !!

By the way, die CSVDE-Zeile macht das ganze doch alles automatisch, d.h. mit der Option "-k" werden Import-Fehler ignoriert, d.h. wenn ein Benutzer schon existiert wird dieser auch nicht erneut angelegt, weil das ja ein Fehler auswirft. Also brauchst du deine Prüfung garnicht ...
Es reicht dein:
csvde -i -k -f "C:\users\Administrator\Desktop\test.csv"

wenn du es unbedingt wie oben machen willst, geht es auch cleaner so:
Import-Module ActiveDirectory
$import = Import-CSV "C:\users\administrator\desktop\test.csv"  
foreach($line in $import){
    $ADAbfrage = get-aduser -Identity $line.sAMAccountName -ErrorAction SilentlyContinue
    if (!$ADAbfrage){
        # Hier den Benutzer erstellen ...

        # Passwort setzen
        Set-AdAccountPassword -Identity $line.sAMAccountName -PassThru -Reset -Newpassword (ConvertTo-Securestring $line.sAMAccountName -Asplaintext -force)
    }
}
Die Codezeile (7) für das Erstellen des Benutzers habe ich rausgelassen, die hatte ich dir ja schon mal gepostet

Grüße Uwe
Mitglied: gabeBU
gabeBU 24.02.2014 um 12:41:22 Uhr
Goto Top
Danke vielmals für die Hilfe.

Ja wisst ihr, später soll eben das Script Benutzer die in der alten CSV waren und jetzt nicht mehr vorhanden sind direkt aus der AD rauslöschen, deswegen denke ich, dass solch eine Abfrage es schon bringen würde.