Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell: Letzte Schritte

Frage Microsoft

Mitglied: gabeBU

gabeBU (Level 1) - Jetzt verbinden

25.02.2014, aktualisiert 15:41 Uhr, 1154 Aufrufe, 4 Kommentare

Hallo Zusammen

Dank euch ist das Script nun fast fertig und sieht so aus:
01.
Import-Module ActiveDirectory;  
02.
$Zaehler = 0  
03.
$Import = @(Import-CSV C:\users\administrator\desktop\test.csv)  
04.
$Reihenzaehler = $Import | Measure-Object;  
05.
$Benutzername =  $Import[$Zaehler].sAMAccountName;  
06.
$CompletePath = "CN=$Benutzername,OU=ZugelasseneMaschinen,OU=UEB,DC=ueb,DC=lokal"; 
07.
 
08.
do 
09.
10.
   
11.
    $ADAbfrage = $ADAbfrage = get-aduser -Identity "CN=$Benutzername,OU=ZugelasseneMaschinen,OU=UEB,DC=ueb,DC=lokal" -ErrorAction SilentlyContinue  
12.
    $Benutzername 
13.
    if ($Benutzername -ne $ADAbfrage ) 
14.
15.
        csvde -i -k -f C:\users\Administrator\Desktop\test.csv    
16.
        Set-AdAccountPassword -Identity $Benutzername -PassThru -Reset -Newpassword (ConvertTo-Securestring $Import[$Zaehler].sAMAccountName -Asplaintext -force)  
17.
        $Zaehler = $Zaehler + 1;   
18.
19.
    elseif ($Benutzername -eq  $ADAbfrage) 
20.
21.
        write-host "nix"; 
22.
    }  
23.
    elseif ($Benutzername -eq $NULL) 
24.
25.
        write-host "bööb" 
26.
        Remove-ADUser -Identity "CN=$Benutzername,OU=ZugelasseneMaschinen,OU=UEB,DC=ueb,DC=lokal" -Confirm:$false 
27.
28.
    $Zaehler = $Zaehler + 1;  
29.
    Clear-Variable ADAbfrage  
30.
}while ($Reihenzaehler > $Zaehler  ) 
Jetzt gibt es nur noch eine kleine Sache und zwar folgendes:

Wenn ich einen Benutzer in der AD habe, der aber nicht in meiner CSV ist, soll er gelöscht werden. Also Beispielsweise ich habe in meiner OU die Benutzer:
hans
fritz
peter

Aber in meiner CSV ist nur
Hans
Peter

vorhanden. Das heisst, es soll dann Fritz löschen. Versucht habe ich dies mit dem 3 elseif($Benutzername -eq $NULL). Nur leider springt das Script, wenn ein Benutzer nicht vorhanden ist, immer in das zweite elseif ($Benutzername -eq $ADAbfrage).

Wie könnte ich dies nun noch umsetzen?

Danke für eure Antworten.

Gruss

Gabriel
Mitglied: Rolf-Hanka.ITD
25.02.2014 um 12:01 Uhr
Hey du benutzt in deinem Skript das Programm CSVDE. Damit kannst du allerdings nur Objekte hinzufügen. Das Richte Programm wäre bei deinem Wunsch aber LDIFDE. Damit kannst du aus eine *.ldif Datei Objekte erstellen, ändern und löschen!

Du musst also ldifde statt csvde benutzen und deine *.csv in eine *.ldif um basteln.

Hier bekommst du dann weitere Informationen zu LDIFDE.
http://technet.microsoft.com/de-de/library/cc730865.aspx

LG
Bitte warten ..
Mitglied: gabeBU
25.02.2014 um 13:56 Uhr
Das ist ein netter Tipp, aber ich weiss eher nicht, wie ich die Abfrage machen soll, deswegen wäre hier LDIFDE nicht unbedingt gefragt. Das löschen funktioniert für mich auch wunderbar mit Remove-ADUser.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 25.02.2014, aktualisiert um 15:41 Uhr
Hallo Gabriel,
zu dem Code sag ich nichts mehr, hatte dir beim letzten mal eine bessere Alternative vorgeschlagen, aber zurück zum Thema.
Das Löschen von Usern im AD die nicht in deiner CSV-Datei stehen lässt sich so in einem Schlag machen
01.
$allADUsers = Get-ADUser -Filter * -SearchBase "OU=ZugelasseneMaschinen,OU=UEB,DC=ueb,DC=lokal" | select -ExpandProperty SamAccountName 
02.
$allCSVUsers = Import-CSV "C:\users\administrator\desktop\test.csv" | select -ExpandProperty SamAccountName 
03.
$allUsersNotInCSV = Compare-Object -ReferenceObject $allADUsers -DifferenceObject $allCSVUsers | ?{$_.SideIndicator -eq "<="} | select  
04.
-ExpandProperty InputObject 
05.
 
06.
foreach ($user in $allUsersNotInCSV){ 
07.
   echo "Lösche Benutzer: $user ..." 
08.
   Remove-ADUser -Identity "CN=$User,OU=ZugelasseneMaschinen,OU=UEB,DC=ueb,DC=lokal" -Confirm:$false  
09.
}
Grüße Uwe
Bitte warten ..
Mitglied: gabeBU
25.02.2014, aktualisiert um 16:34 Uhr
Yes! Danke. Jetzt muss ich nur noch schauen, dass er sonst den Benutzer erstellt.

Edit: SOoo! Alles fertig, Script funktioniert nun. Ich muss nur zusehen, dass immer ein Benutzer vorhanden ist (in der AD wie auch in der CSV). So sieht nun das Script aus:
01.
Import-Module ActiveDirectory 
02.
do 
03.
04.
$Zaehler = 0; 
05.
$Import = @(Import-CSV C:\users\administrator\desktop\MACAdresslist.csv)  
06.
$Benutzername =  $Import[$Zaehler].sAMAccountName;  
07.
$allADUsers = Get-ADUser -Filter * -SearchBase "OU=ZugelasseneMaschinen,OU=UEB,DC=ueb,DC=lokal" | select -ExpandProperty SamAccountName 
08.
$allCSVUsers = $Import | select -ExpandProperty SamAccountName 
09.
$allUsersNotInCSV = Compare-Object -ReferenceObject $allADUsers -DifferenceObject $allCSVUsers | ?{$_.SideIndicator -eq "<="} | select  -ExpandProperty InputObject -erroraction SilentlyContinue 
10.
 
11.
foreach($Benutzername in $allUsersNotInCSV) 
12.
13.
 csvde -i -k -f C:\users\Administrator\Desktop\MACAdresslist.csv    
14.
 try 
15.
16.
    Set-AdAccountPassword -Identity $Benutzername -PassThru -Reset -Newpassword (ConvertTo-Securestring $Import[$Zaehler].sAMAccountName -Asplaintext -force) 
17.
18.
 catch 
19.
20.
21.
 finally 
22.
23.
24.
}  
25.
 
26.
foreach ($Benutzername in $allUsersNotInCSV) 
27.
28.
   try 
29.
30.
   echo "Lösche Benutzer: $user ..." 
31.
   Remove-ADUser -Identity "CN=$Benutzername,OU=ZugelasseneMaschinen,OU=UEB,DC=ueb,DC=lokal" -Confirm:$false  
32.
33.
   catch 
34.
35.
36.
   finally 
37.
38.
39.
40.
            
41.
$Zaehler = $Zaehler + 1; 
42.
}while($Zaehler > $Reihenzaehler)  
43.
 
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell Domain Join (2)

Frage von Patrick-IT zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell Hashtable to Übersichtliche Darstellung (2)

Frage von Marabunta zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell Mauszeiger ausblenden (11)

Frage von Marabunta zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...