Jump to content

Powershell - Berechtigungen werden nicht gesetzt


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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? :(

Link zu diesem Kommentar
  • 1 Monat später...
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.

Link zu diesem Kommentar

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.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

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

×
×
  • Neu erstellen...