Hi zusammen,
ich versuche gerade, via PowerShell-Script die Berechtigungen auf Ordner zu setzen. Dabei habe ich mich vornehmlich an dieses Tutorial hier gehalten:
https://technet.microsoft.com/en-us/library/ff730951.aspx
Ich habe dieses angepasst und hier mein funktionierender Code:
function set_NTFS_permissions ($group,$folder){ $rule = "" # Just to make sure its empty $user_read = "gfo\"+$group+"_read" #$read_permissions = @("ReadAndExecute","Synchronize") $read_permissions = "ReadAndExecute,Synchronize" $user_write = "gfo\"+$group+"_edit" $write_permissions = "DeleteSubdirectoriesAndFiles,Write,ReadAndExecute,Synchronize" $acl = get-acl $folder # Calls for current permissions $acl.SetAccessRuleProtection($True,$True) # Protects inherit permissions (superior | inferior) $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($user_read,$read_permissions,'ContainerInherit,ObjectInherit','None','Allow') $acl.AddAccessRule($rule) Set-Acl $folder $acl $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($user_write,$write_permissions,'ContainerInherit,ObjectInherit','None','Allow') $acl.AddAccessRule($rule) Set-Acl $folder $acl } $folder = '\\domain.local\path\path\path' $group = 'DL_fs_path' set_NTFS_permissions $group $folder Get-Acl $folder | Format-List
Das funktioniert auch soweit ganz gut.
Das Problem entsteht erst, wenn ich genau diesen Code in ein anderes Script einfüge und die Variablen $folder und $group am Ende durch Inhalte eines Arrays einer Schleife befülle.
Dabei werden ganz korrekt die Strings übergeben, die an der jeweiligen Stelle des Arrays stehen.
Ich habe dies durch Ausgabe der Variablen vor und nach Übergabe an die Funktion sowie durch Susgabe deren Typs geprüft. Es sind Strings und die Inhalte sind korrekt.
Dennoch funktioniert die (ansonsten unveränderte) Funktion dort nicht.
Ich erhalte den Fehler:
Ausnahme beim Aufrufen von "AddAccessRule" mit 1 Argument(en): "Some or all identity references could not be translated." In C:\Scripts\filestruct.ps1:20 Zeichen:5+ $acl.AddAccessRule($rule)+ ~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException+ FullyQualifiedErrorId : IdentityNotMappedException
Die Gruppe, die verwendet wird, wird unmittelbar vor dem Aufruf erstellt und existiert auch (Prüfung im AD erfolgreich). Auch der Ordner, der berechtigt werden soll, wird kurz vorher erstellt und existiert ebenfalls.
Ich habe auch schon versucht, mit einem Wait-Event 1 ein bisschen Verzögerung hinein zu bringen, damit das AD auch wirklich weiß, dass der Benutzer existiert. Brauche auch nichts. (Wenig überraschend, da es, wie gesagt, in der abgeschotteten Funktion problemlos
funktioniert).
Ich weiß hier echt nicht mehr weiter. Hat zufällig jemand von euch eine Idee?
Gruß, Gabriel