morphium 10 Geschrieben 25. September 2012 Melden Teilen Geschrieben 25. September 2012 Hi, ich arbeite gerade an einem kleinen Powershell-Script und komme an einer Stelle nicht weiter. Ich will mit dem Script mehrere Ordner, verteilt auf unterschiedliche Server, bearbeiten (Besitz übernehmen, Admin in die ACL mit Vollzugriff eintragen, Ordner löschen). Auf zwei Servern (Win2k3) funktioniert das auch alles, nur auf dem Win2k8R2 nicht. # Besitz übernehmen takeown -S file.domaene.local /F "freigabe\ordner" /R /D /J # Berechtigungen anpassen $homepath = "\\file.domaene.local\freigabe\ordner" $acl = Get-Acl $homepath $permission = "domaene\admin","FullControl","ContainerInherit,ObjectInherit","None","Allow" $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission $acl.SetAccessRule ($accessRule) $acl | Set-Acl "$homepath" # Löschen des Ordners Remove-Item "$homepath" -Force -Recurse Habe ich da irgendwo einen Fehler drin? Wie gesagt, auf zwei anderen Servern funktioniert das alles, nur auf dem einen nicht. Fehlermeldung bei takeown: Fehler: Der an einen Systemaufruf übergebene Datenbereich ist zu klein. Vorher laufen aber zig Unterordner mit ERFOLGREICH: Die Datei (oder der Ordner) "\\file.domaene.local\freigabe\ordner\unterordner" gehört jetzt dem Benutzer "domaene\admin". durch. Der Abschnitt "# Berechtigungen anpassen" läuft dann ohne Fehlermeldung durch. Fehlermeldung bei Remove-Item: Remote-Item : Falscher Parameter.Bei Zeile:1 Zeichen:12 + Remove-Item <<<< "\\file.domaene.local\freigabe\ordner" -Force -Recurse + CategoryInfo : WriteError: (\\file.domaene.local\freigabe\ordner:String) [Remove-Item], IOException + FullyQualifiedErrorId : RemoveItemIOError,Microsoft.PowerShell.Commands.RemoveItemCommand Der Admin ist mit den Berechtigungen "Speziell" für "Nur diesen Ordner" in die ACL eingetragen. Hinter "Speziell" verbirgt sich dann der "Vollzugriff: Zulassen" für den übergeordneten Ordner. Wo ist der Fehler? :( Zitieren Link zu diesem Kommentar
keremg 10 Geschrieben 12. November 2012 Melden Teilen Geschrieben 12. November 2012 Hi, ich arbeite gerade an einem kleinen Powershell-Script und komme an einer Stelle nicht weiter. Ich will mit dem Script mehrere Ordner, verteilt auf unterschiedliche Server, bearbeiten (Besitz übernehmen, Admin in die ACL mit Vollzugriff eintragen, Ordner löschen). Auf zwei Servern (Win2k3) funktioniert das auch alles, nur auf dem Win2k8R2 nicht. # Besitz übernehmen takeown -S file.domaene.local /F "freigabe\ordner" /R /D /J # Berechtigungen anpassen $homepath = "\\file.domaene.local\freigabe\ordner" $acl = Get-Acl $homepath $permission = "domaene\admin","FullControl","ContainerInherit,ObjectInherit","None","Allow" $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission $acl.SetAccessRule ($accessRule) $acl | Set-Acl "$homepath" # Löschen des Ordners Remove-Item "$homepath" -Force -Recurse Habe ich da irgendwo einen Fehler drin? Wie gesagt, auf zwei anderen Servern funktioniert das alles, nur auf dem einen nicht. Fehlermeldung bei takeown: Vorher laufen aber zig Unterordner mit durch. Der Abschnitt "# Berechtigungen anpassen" läuft dann ohne Fehlermeldung durch. Fehlermeldung bei Remove-Item: Der Admin ist mit den Berechtigungen "Speziell" für "Nur diesen Ordner" in die ACL eingetragen. Hinter "Speziell" verbirgt sich dann der "Vollzugriff: Zulassen" für den übergeordneten Ordner. Wo ist der Fehler? :( Hallo, da ich aus der Programmierwelt komme, kann ich Dir zu dem Fehler "Der an einen Systemaufruf übergebene Datenbereich ist zu klein" (windows intern 0x7A, bzw 122) soviel sagen, dass das eigentlich eine interne Sache sein muss, bzw. irgend ein übergebener/zurückgegebener Puffer nicht groß oder genau dimensioniert ist. Das bedeutet, das Du eine Funktion aufrufst, die dann in einen von Dir beeitgestellten Speicher die gewünschten Daten übergeben will, aber feststellt, dass der Speicher zu klein ist. Da es sich hier um Rechte, bzw. ACE/ACL Angelegenheiten handelt, vermute ich mal, das eine der Aufrufe an die Advapi32.dll versagt, zumal da gerne jede Menge Funktionen sind, die einen LPVOID als Buffer wollen und dazu die richtige Eingangslänge in meistens DWORD. Wenn Du jetzt aber z.B. die zu übergebenden Datenstrukturen falsch belegst, bzw, so etwas wie das DWORD dwSize falsch berechnest, dann bekommst Du meistens diesen Fehlercode. Ich vermute, das es eine interne Angelegenheit in dem Modul ist, aber für den Fall, dass Du das jetzt herausgefunden hats, was es ist, würde es mich freune, wenn Du es hier aufzeigen würdest. Grüße K. Zitieren Link zu diesem Kommentar
morphium 10 Geschrieben 12. November 2012 Autor Melden Teilen Geschrieben 12. November 2012 Hallo, herausgefunden habe ich nichts. Habe es mit einem anderen Befehl realisiert. ;) Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 12. November 2012 Melden Teilen Geschrieben 12. November 2012 Habe es mit einem anderen Befehl realisiert. ;) Ist der andere Befehl geheim? Wenn nein, wäre schön wenn Du die Leser an der Lösung teilhaben lässt. Zitieren Link zu diesem Kommentar
morphium 10 Geschrieben 12. November 2012 Autor Melden Teilen Geschrieben 12. November 2012 Nein, natürlich nicht. Hatte den Thread nur schon vergessen. Sorry. Hier das Script # Variable $homepath befüllen $homepath = \\file.domaene.local\freigabe\ordner # Besitz übernehmen Get-Item $homepath | Set-Owner -Account domaene\admin -Recurse # Berechtigung vergeben $inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit" $propagation = [system.security.accesscontrol.PropagationFlags]"None" $acl = Get-Acl $homepath $accessrule = New-Object system.security.AccessControl.FileSystemAccessRule("domaene\admin","FullControl", $inherit, $propagation, "Allow") $acl.AddAccessRule($accessrule) Set-Acl -aclobject $acl $homepath # Löschen des Ordners Remove-Item "$homepath" -Force -Recurse Damit funktioniert es auf nem Win2k8 R2 Server. Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 12. November 2012 Melden Teilen Geschrieben 12. November 2012 Hier das Script Danke. ;) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.