Ich bin auf ein Problem gestoßen und habe ein Skript geschrieben, das PDF-Dateien über ein Programm komprimiert und Rechte auf eine neue Datei überträgt, indem es von der alten kopiert, um den Zugriff auf neue Dateien zu unterscheiden. Hier ist der Teil des Codes, der bei mir das Problem ist
$owner = $origFile.GetAccessControl().GetOwner([System.Security.Principal.SecurityIdentifier])
$newFile = Get-Item -Path $PathoutFile
$FileSecurity = new-object System.Security.AccessControl.FileSecurity
$FileSecurity.SetOwner($owner)
[System.IO.File]::SetAccessControl($newFile, $FileSecurity)
Get-Acl -Path $origFile | Set-Acl -Path $newFile
Mein Problem ist folgendes: Ich führe das Skript mit Domänenadministratorrechten aus, alles funktioniert einwandfrei. Wenn ich ein Domänenbenutzerkonto verwende und dem Verzeichnis maximale Rechte gewähre, wird darin eine komprimierte Datei gespeichert, und in diesem Fall erhalte ich die Fehlermeldung „Versuch, einen nicht autorisierten Vorgang auszuführen. Ich möchte das Skript aus einem einfachen Grund nicht unter dem Administratorkonto ausführen: Ich glaube, dass solche Rechte für die Ausführung dieses Vorgangs überflüssig sind. Ich lerne und mache Fehler, aber ich möchte lernen, wie man gute Skripte schreibt und die erforderlichen Zugriffsregeln für ihre Arbeit kompetent verwaltet. Daher bitte ich Sie, mir dabei zu helfen, herauszufinden, was ich tun muss, damit die Rechte bei der Verwendung des Skripts zugewiesen werden. Ich habe bei Google nach Informationen zu diesem Thema gesucht, aber keine umfassenden Informationen gefunden. Ich habe Informationen gefunden, dass man ohne Administratorrechte den Eigentümer nicht ändern kann, aber ich verstehe nicht, warum ich in diesem Fall die Rechte nicht auf eine neue Datei übertragen kann. Bitte helfen Sie mir bei der Lösung dieses Problems. Das Festlegen des Eigentümers von der alten Datei auf die neue Datei ist eine optionale Aufgabe. PS-Aktionen werden auf einer Netzwerkfreigabe ausgeführt und der Benutzer, unter dem das Skript ausgeführt wird, hat vollen Zugriff. Der Netzwerkordner befindet sich auf Win Serv 2008 SP2 und das Skript wird auf Windows 10 Pro ausgeführt. Vielen Dank im Voraus.
Antwort1
Ich selbst habe mit dem NTFSSecurity PowerShell-Modul eine Lösung für mein Hauptproblem gefunden. Die Übertragung der Zugriffsrechte erfolgte mit dem Befehl Get-NTFSAccess $filein | Add-NTFSAccess $fileout