Zum Inhalt springen

Power Shell "Benutzerleichen" finden


Marius1990

Empfohlene Beiträge

Hallo Ihr

ich sitze gerade kopfzerbrechend an eine Aufgabe.

Zugegebenermaßen stehe ich glaube ich auch etwas auf dem Schlauch.

Folgende Situation:

In unserem Betrieb hat ein AD-Benutzer zwei Servergespeicherte Ordner.

Einen Ordner als Folderredirection (Eigene Dateien und Desktop)

und einen Ordner um alles andere vom Profil zu speichern.

Folglich steht der Benutzer "Marius" sowol in der AD als auch als Ordner auf 2 verschiedenen Servern

Beim löschen eines Benutzers müssen also auch die 2 Ordner gelöscht werden.

Ich möchte nun mit einem Powershell-Script herausfinden welche Benutzer diese Voraussetzungen nicht mehr erfüllen.

(Benutzer in AD vorhanden aber keine Ordner mehr, oder Ordner noch vorhanden aber nicht mehr in der AD angelegt)

Mit


$auslesen= get-aduser -filter {name -like "*"} 

$benutzer= $auslesen | ForEach-Object {$_.Samaccountname}

lasse ich mir die Benutzernamen der vorhandenen AD-Benutzer anzeigen Mit
get-childitem -r -filter $_benutzer -path PFAD

prüfe ich ob der Ordner auch tatsächlich auf dem Pfad liegt. (Da kann ich ja die ausgabe Verarbeiten)

Allerdings fehlt mir gerade irgendwie der Hirnschmalz das ganze zusammen zu bringen.

Anfangs würde das reichen:

Wenn Benutzer in AD und als Ordner -> Dann nichts

Wenn Benutzer in AD aber nicht als Ordner -> Dann in ne .txt schreiben

Für Hilfe wäre ich dankbar, verkrieche mich aber auch nochmal um weiter zu denken :old

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe meinen Denkfehler gefunden, danke :) $benutzer ist ja automatisch ein Array das ich durchlaufen kann.

Mein Code sieht jetzt so aus (Pfade sind vereinfacht)

import-module ActiveDirectory

$date = get-date -uformat "%y%m%d l %H%M%S"

$logfilename = "logfile_$date.txt"

$auslesen= get-aduser -filter {name -like "*"}

$benutzer= $auslesen | ForEach-Object {$_.Samaccountname}

##Start Ordnerüberprüfung 1

"Ordner1 fehlt:" | out-file "c:\$logfilename"

"___________________" | out-file "c:\$logfilename" -append

for($i=3; $i -lt $benutzer.length; $i++){

write-host "Prüfe Benutzer" $benutzer[$i]

if (((get-childitem -r -filter $benutzer[$i] -path d:\) -notlike "?*") -and ((get-childitem -r -filter "$benutzer[$i].V2" -path d:\)-notlike "?*"))

{

$benutzer[$i] | out-file "c:\$logfilename" -append

}

else

{

}

}

"___________________" | out-file "c:\$logfilename" -append

"ende" | out-file "c:\$logfilename" -append

##Ende Ordnerüberprüfung 1

Funktioniert auch so weit, außer die Bedingung mit dem .V2

Habe jetzt gesehen dass der Benutzernamen im Array $benutzer mit einem Leerzeichen am Schluss gespeichert wird. Hat einer ne Idee warum? mit -replace bekomm ich das nicht weg. und wenn das bleibt heißt es ja "benutzer .V2" und dass es den nicht gibt is ja logisch.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...