emeriks
Goto Top

PowerShell - ACL für AD-Objekt ändern

Hi,
ich sehe wahrscheinlich gerade den Wald vor lauter Bäumen nicht.

Ich habe von einem AD-Objekt die ACL ausgelesen. Eine der ACEs diesr ACL lautet

ActiveDirectoryRights : ReadProperty, GenericExecute
InheritanceType       : All
ObjectType            : 00000000-0000-0000-0000-000000000000
InheritedObjectType   : 00000000-0000-0000-0000-000000000000
ObjectFlags           : None
AccessControlType     : Allow
IdentityReference     : DOMAIN\GROUPNAME
IsInherited           : False
InheritanceFlags      : ContainerInherit
PropagationFlags      : None

Jetzt versuche ich, den ACL anderer AD-Objekte die gleiche ACE hinzuzufügen. Geht nicht.
(Mir ist klar, dass ich direkt die ausgelesene ACE weiterverwenden könnte. Will ich aber nicht. Weil ich das auch für "nackte" AD's anwenden will, also solchen, wo ich nicht davon ausgehen kann, dass es eine solche ACE schon gibt, welche ich auslesen könnte.)

Es scheitert schon beim Erstellen des ACE-Objekts. (ActiveDirectoryAccessRule)

$ReadProperty_GenericExecute = 131092
$Allow = 0
$All = 1
$Null_GUID = [GUID]"00000000-0000-0000-0000-000000000000"  

$Groupname = "GROUPNAME"  
$GroupSID = (Get-ADgroup $Groupname -Properties ObjectSID).ObjectSID.Value

$ACE1 = New-Object System.DirectoryServices.ActiveDirectoryAccessRule($GroupSID, $ReadProperty_GenericExecute, $Allow, $Null_GUID, $All, $Null_GUID)

Hier behauptet PS mit konstanter Bosheit, dass es keinen Konstruktor mit 6 Argumenten geben würde.
New-Object : Für "ActiveDirectoryAccessRule" und die folgende Argumenteanzahl kann keine Überladung gefunden werden: "6".  
In Zeile:3 Zeichen:9
+ $ACE1 = New-Object System.DirectoryServices.ActiveDirectoryAccessRule ...
    + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
 

Laut Microsoft-Doku gibt es diesen aber sehrwohl!
ActiveDirectoryAccessRule Konstruktoren

Was übersehe ich? Bäume?

E.

Content-ID: 3286379937

Url: https://administrator.de/forum/powershell-acl-fuer-ad-objekt-aendern-3286379937.html

Ausgedruckt am: 31.03.2025 um 14:03 Uhr

emeriks
Lösung emeriks 08.07.2022 um 09:50:10 Uhr
Goto Top
Ach nö ...
Fehler gefunden.

Statt
$GroupSID = (Get-ADgroup $Groupname -Properties ObjectSID).ObjectSID.Value
muss es lauten
$GroupSID = (Get-ADgroup $Groupname -Properties ObjectSID).ObjectSID
colinardo
colinardo 08.07.2022 aktualisiert um 10:15:59 Uhr
Goto Top
Immer schön an die Types denken. Das nehmen die Konstruktoren einem gerne übel face-smile. Beim ersten sind das [System.Security.Principal.NTAccount] für AccountNamen oder [System.Security.Principal.SecurityIdentifier] für SIDs.

Grüße Uwe