astalbold 10 Geschrieben 3. August 2012 Melden Teilen Geschrieben 3. August 2012 Hallo, ich bastel gerade an einem Script zum anlegen der Ordnerstruktur für unserer Server. Mit dem Script möchte ich nun auch die Berechtigungen für die angelegten Verzeichnisse auf dem Server setzen. Dazu hab ich im Intenet etwas gesucht und ein Beispiel Script gefunden was das für mich macht. Ich habe das Script etwas auf meine Bedürfnisse angepasst und sieht nun wie folgt aus: function FunSetACL { param([string]$DirectoryPath, [string]$IdentityRef, [string]$Right) Write-Host "Directory: $DirectoryPath" Write-Host "IdentityRef: $IdentityRef" Write-Host "Rights: $Right" if (Test-Path -path $DirectoryPath) { switch ($Right) { list {$FileSystemRights = [system.Security.AccessControl.FileSystemRights]"ListDirectory, ReadAttributes, ReadExtendedAttributes, ReadPermissions, Traverse"} read {$FileSystemRights = [system.Security.AccessControl.FileSystemRights]"read"} write {$FileSystemRights = [system.Security.AccessControl.FileSystemRights]"write"} change {$FileSystemRights = [system.Security.AccessControl.FileSystemRights]"change"} chmod {$FileSystemRights = [system.Security.AccessControl.FileSystemRights]"ListDirectory, ReadAttributes, ReadExtendedAttributes, ReadPermissions, Traverse"} full {$FileSystemRights = [system.Security.AccessControl.FileSystemRights]"FullControl"} } $InheritanceFlag1 = [system.Security.AccessControl.InheritanceFlags]::ObjectInherit $InheritanceFlag2 = [system.Security.AccessControl.InheritanceFlags]::ContainerInherit $InheritanceFlag=$InheritanceFlag1 -bor $InheritanceFlag2 # http://msdn.microsoft.com/de-de/library/system.security.accesscontrol.propagationflags # None - Gibt an, dass keine Vererbungsflags festgelegt sind. # NoPropagateInherit - Gibt an, dass der ACE nicht an untergeordnete Objekte weitergegeben wird. # InheritOnly - Gibt an, dass der ACE nur an untergeordnete Objekte weitergegeben wird. Dies schließt untergeordnete Container- und Endobjekte ein. $PropagationFlag = [system.Security.AccessControl.PropagationFlags]::InheritOnly $AccessControlType =[system.Security.AccessControl.AccessControlType]::Allow $User = New-Object System.Security.Principal.NTAccount($IdentityRef) $ACE = New-Object System.Security.AccessControl.FileSystemAccessRule($User, $FileSystemRights, $InheritanceFlag, $PropagationFlag, $AccessControlType) $ACL = Get-ACL $DirectoryPath $ACL.AddAccessRule($ACE) Set-ACL $DirectoryPath $ACL } else { Write-Host "Folder existiert nicht" } } FunSetACL "C:\temp\srv2k3test\dat\pub" "Domain\Peter.Pan" "full" Eigentlich funktioniert das Script soweit schon ganz gut. Ich habe nur Schwierigkeiten mit dem InheritanceFlags. Wenn das Script abläuft werden die von mir gewünschten Rechte gesetzt aber nur für "Unterordner und Dateien". Ich möchte die Rechte aber für "Diesen Ordner, Unterordner und Dateien" setzen. Ich verstehe einfach nicht wie ich die Flags kombinieren soll damit das dabei raus kommt. Kann mir da jemand einen Tip geben? Gruß AS Zitieren Link zu diesem Kommentar
ducke 11 Geschrieben 3. August 2012 Melden Teilen Geschrieben 3. August 2012 Hallo astalbold, zu aller erst würde ich Dir empfehlen mit dem NTFSSecurity Modul aus dem Script Center von Mircosoft zu arbeiten. Das macht das Leben viel leichter. Das Modul findest du hier (v1.3) Mit deinem Script hast du keine "saubere" Berechtigung, sondern du berechtigst einzeln. Hier ein Beispiel wie einfach das mit dem Modul geht: $path = "C:\temp\srv2k3test\dat\pub" $acc = "Domain\Peter.Pan" Get-Item $path | Add-Ace -Account $acc -AccessRights FullControl -InheritanceFlags ContainerInherit,ObjectInherit -AccessType Allow Zitieren Link zu diesem Kommentar
astalbold 10 Geschrieben 7. August 2012 Autor Melden Teilen Geschrieben 7. August 2012 Hallo ducke, danke für den Tipp. Ich muss mal schauen ob ich das Modul eingebunden bekomme an der Stelle wo das Script laufen soll. Werde das diese Woche testen. Aber nach den ersten Blicken auf das Modul, besteht dort mein Problem mit den InheritanceFlag weiterhin. In deinem Beispiel kombinierst du InheritanceFlags (ContainerInherit,ObjectInherit) genauso wie ich in einem Script. Demnach dürften die Rechte doch auch nur für "Unterordner und Dateien" gesetzt werden. Da stehe ich wieder vor dem Problem wie ich die Flags kombinieren muss das sie für "Diesen Ordner, Unterordner und Dateien" gilt? Oder versteh ich das alles falsch... :D Zitieren Link zu diesem Kommentar
ducke 11 Geschrieben 7. August 2012 Melden Teilen Geschrieben 7. August 2012 Yep das verstehst du falsch :) Hier ist dein Problem: $PropagationFlag = [system.Security.AccessControl.PropagationFlags]::InheritOnly Mach mal bitte das: $PropagationFlag = [system.Security.AccessControl.PropagationFlags]::None Siehe auch PropagationFlags-Enumeration Zitieren Link zu diesem Kommentar
astalbold 10 Geschrieben 8. August 2012 Autor Melden Teilen Geschrieben 8. August 2012 Moin ducke, oh man, danke - das war es... :D Der Wald vor lauter Bäumen. :) 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.