Benutzer mit den meisten Antworten
Ordner finden - in denen ich keine Berechtigung habe

Frage
-
Hallo,
ich muss ein ziemlich wichtiges Verzeichniss am Server in ein Anderes verschieben - das sollte also am Abend erledigt werden. Jetzt weis ich, das mich die User aus gewissen Verzeichnissen ausgesperrt haben.
Da ich aber auch diese Unterordner verschieben muss und irgendwie wenig Lust habe, den Verschiebe-Vorgang ein paar Minuten/Stunden lang zu beobachten und zu hoffen, das keine Fehlermeldung kommt, würde ich gerne mit get-acl gerne die Ordner rausfinden, wo ich nicht berechtigt bin.
Jetzt hab ich mir ein Testverzeichniss angelegt - D:\Temp3 - da gibt es vier Ordner (1,2,3,4) - mit folgender Berechtigung:
- Ordner 1: ich und userxy haben Zugriff
- Ordner 2: ich habe Vollzugriff
- Ordner 3: ich und userxy haben Zugriff
- Ordner 4: nur userxy hat ZugriffWenn ich nun eine Abfrage starte - dann sieht das wie folgt aus:
Get-Childitem D:\Temp3 | where {$_.Psiscontainer} | Get-Acl Path Owner Access ---- ----- ------ 1 me userxy Allow ReadData, S... 2 me me Allow FullControl 3 me userxy Allow ReadAndExec... 4 me
Sieht ja schon gut - aus. Durch die Ausgabe hab ich mir gedacht, das ich nach Access filtern kann - wenn nichts drinnen steht, dann hab ich das was ich will...
Get-Childitem D:\Temp3 | where {$_.Psiscontainer} | Get-Acl | where {$_.access -eq $NULL}
Leider erfolglos - bzw. keine Ergebnisse... auch eine Versuch mit accesstostring hat nicht wirklich was gebracht...
Get-ChildItem D:\Temp3 | Where {($_.psiscontainer)} | Get-Acl | where{$_.accesstostring -eq $NULL}
Hat irgendwer eine Idee, wie man das umsetzen kann?
Besten Dank im voraus.
Björn
Antworten
-
Servus,
so sollte es funktionieren:
Get-ChildItem D:\Temp3 | Where-Object { $_.PSisContainer } | Get-Acl | Where-Object { $_.Access.Count -eq "0" }
- Als Antwort markiert bjoernhoefer Mittwoch, 13. Juni 2012 12:01
Alle Antworten
-
Um Dateien Professionell zu verschieben nutzt du am besten Robocopy.exe!
Robocopy schreibt dir dann auch ein Logfile mit den Dateien / Ordner wo etwas nicht geklappt hat.
Dies kannst du ja auch erstmal als Probelauf laufen lassen, dann hast du deine Dokumentation.Damit dich die User in Zukunft nicht mehr ärgern können solltest du bei ALLEN Freigaben (Shares) die berechtigungen von vollzugriff auf ändern (Change) setzen.
Somit können die User noch Voll arbeiten aber sie können keinen Berechtigungen ändern.
Zum ändern / auslesen von berechtigungen sind Set-ACL und Get-ACL nur bedingt geeignet.
Dafür nimmst du besser das Modul: File System Security PowerShell Module 1.3
http://gallery.technet.microsoft.com/scriptcenter/1abd77a5-9c0b-4a2b-acef-90dbb2b84e85Damit kannst du dann auch leicht den besitzer (Owner) auf dich zurückbiegen und dann klappt es auch mit dem Verschieben.
hier ist eine Lösung mit PowerShell:
Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
- Bearbeitet Peter Kriegel Mittwoch, 13. Juni 2012 10:22
-
Hi Peter,
danke für dein Kommentar.
Das mit Robocopy hab ich das letzte Mal, als ich wichtige Dateien verschoben hab versucht. War dann nicht so prickelnd - als 90 User kein Profil mehr hatten, bzw. ich alles händisch kopieren musste.
Deshalb hab ich robocopy gleich kategorisch ausgeschlossen...
Die Erweiterungen hab ich mir jetzt mal kurz angeschaut - ich kann z.B.: den Owner im Verzeichniss 4 nicht auslesen - klarerweise, da hab ich keinen Zugriff.
Kann ich diesen Umstand vielleicht irgendwie ausnutzen, um hier eine Liste oder sonst was zu machen? -
Servus,
so sollte es funktionieren:
Get-ChildItem D:\Temp3 | Where-Object { $_.PSisContainer } | Get-Acl | Where-Object { $_.Access.Count -eq "0" }
- Als Antwort markiert bjoernhoefer Mittwoch, 13. Juni 2012 12:01
-
Ich bin ein PowerShell Fan ! Aber man muss auch wissen wo PS seine schwächen hat...
Ich habe dir Robocopy empfohlen, weil du letztendlich immer die Funktionalität (Professionalität) von Robocopy mit deinem PowerShell Skript nachbauen musst!
Nur mit dem Nachteil das dein Skript noch nicht erprobt ist und dabei noch mehr murks herauskommen kann!
Robocopy = Robustes Kopieren (auch mit rechte übernahme)Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' ' -