Powershell Besitzer von Ordnern ändern
Hallo, ich versuche den Besitzer von User-Ordnern zu ändern, um sie danach zu löschen. Ich habs einmal mit "Get- und Set-Acl" probiert und einmal mit "icacls".
Mit "Get-Acl" kann konnte ich zwar den obersten Ordner den Besitzer ändern, aber nicht die Unterordner.
Mit "icacls" sagt er mir direkt "Zugriff verweigert.
Anbei meine beiden Skripte:
Mit "Get-Acl" kann konnte ich zwar den obersten Ordner den Besitzer ändern, aber nicht die Unterordner.
Mit "icacls" sagt er mir direkt "Zugriff verweigert.
Anbei meine beiden Skripte:
$users = Get-ADUser -filter * -SearchBase "OU=Test,OU=_aussortieren,OU=01_Benutzer_Gruppen,DC=bwkrhs,DC=kob,DC=zsanbw,DC=de" -Properties SamAccountName | Where{$_.Enabled -ne "True"}
ForEach($user in $users)
{
"$($user.SamAccountName)"
$ordner = "\\bwksrvwsus\TEST_Y\$($user.SamAccountName)\"
$Acl = Get-Acl $ordner
$Acl.SetOwner([System.Security.Principal.NTAccount] "11470762_adm")
Set-Acl $ordner $Acl
#Get-ChildItem -path $ordner -Recurse
Remove-Item -path $ordner -Recurse #-Force #-Confirm:$false #-ErrorAction SilentlyContinue
}
$users = Get-ADUser -filter * -SearchBase "OU=Test,OU=_aussortieren,OU=01_Benutzer_Gruppen,DC=bwkrhs,DC=kob,DC=zsanbw,DC=de" -Properties SamAccountName | Where{$_.Enabled -ne "True"}
ForEach($user in $users)
{
"$($user.SamAccountName)"
$ordner = "\\bwksrvwsus\TEST_Y\$($user.SamAccountName)"
#"$ordner"
#icacls $ordner /remove "$($user.SamAccountName)"
icacls $ordner /inheritance:r /grant:r "bwkrhs.kob.zsanbw.de\11470762_adm:(CI)(OI)(F)" /T
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 372064
Url: https://administrator.de/contentid/372064
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
14 Kommentare
Neuester Kommentar
Hi,
Set-ACL ändert nur die ACL eines Objekts. Wenn Du das für alle Unterordner und Dateien ebenfalls machen willst, dann musst Du die Struktur durchlaufen und für jeden Ordner, jede Datei die ACL auslesen, den Besitzer ändern und die ACL wieder speichern. Anders macht das iacls auch nicht.
Egal ob PowerShell Set-ACL oder iacls: Der Benutzer muss lokaler Administrator und die Shell voll eleviert sein. Oder Du aktvierst im Script die entsprechenden Privilegien. (SE_BACKUP_NAME und SE_RESTORE_NAME) Auch wenn Du remote im Share änderst.
Oder Du führst das Script direkt auf dem Server aus. (Eleviert)
So oder ähnlich.
E.
Set-ACL ändert nur die ACL eines Objekts. Wenn Du das für alle Unterordner und Dateien ebenfalls machen willst, dann musst Du die Struktur durchlaufen und für jeden Ordner, jede Datei die ACL auslesen, den Besitzer ändern und die ACL wieder speichern. Anders macht das iacls auch nicht.
Egal ob PowerShell Set-ACL oder iacls: Der Benutzer muss lokaler Administrator und die Shell voll eleviert sein. Oder Du aktvierst im Script die entsprechenden Privilegien. (SE_BACKUP_NAME und SE_RESTORE_NAME) Auch wenn Du remote im Share änderst.
Oder Du führst das Script direkt auf dem Server aus. (Eleviert)
ich versuche den Besitzer von User-Ordnern zu ändern, um sie danach zu löschen
Hier wäre doch ein einfaches TAKEOWN viel einfacher mit anschließender Rechtevergabe für sich selbst.takeown /f Pfad /r
cacls Pfad /E /T /G Domäne\Benutzer:F
rd Pfad
E.
Einfach mal in die Doku geschaut, und man glaubt es kaum, bei Takeown den Parameter /d mit anschließendem Y/J für den Silent Betrieb gefunden...
https://docs.microsoft.com/en-us/windows-server/administration/windows-c ...
Je nach OS Sprache muss hier Y oder J angegeben werden... das hat sich bei MS wieder ein Lokalisierungs-Trottel ausgedacht.
https://docs.microsoft.com/en-us/windows-server/administration/windows-c ...
Je nach OS Sprache muss hier Y oder J angegeben werden... das hat sich bei MS wieder ein Lokalisierungs-Trottel ausgedacht.
Ohne die Geschweiften Klammern natürlich x-), s.o.
Also die Rechteübernahme funktioniert, er geht auch in jede(n) Unterordner/Datei rein, aber trotzdem habe ich kein Zugriff.
Besitzübernahme ist keine "Rechteübernahme". Ein Besitzer einer Datei hat nicht automatisch Vollzugriff auf diese. Besitzübernahme berechtigt aber dazu, anschließend die ACL zu bearbeiten. Und damit kann man sich selbst Vollzugriff auf die Dateien und Ordner erteilen. Und muss es in solchen Fällen wie Deinem meistens auch. Habe ich aber bereits geschrieben. Einfach lesen.Weil ich gerne wissen würde, wie ich direkt die Besitzübernahme und Rechteübernahme mit takeown und icacls machen kann, ohne die Schleife zu benutzen
Die ForEach- oder die Do-While-Schleife ?Die Do-While-Schleife ist gar nicht mal so dumm. Alledrings solltest Du da einen Zähler für eine max. Anzahl an Versuchen einbauen. Sonst kann das u.U. mal in einer Endlosschleife enden.