Missing object properties

The following command returns an object for the folder ACL

Get-Acl -Path $env:TEMP

The object type is System.Security.AccessControl.DirectorySecurity
MS Docs lists amongst other properties AccessRulesModified and AuditRulesModified. With Get-Members i find the methodes ModifyAccessRule and ModifyAuditRule, but not the mentioned properties:

Get-Acl -Path $env:TEMP | Get-Member -Name '*modify*' -force

   TypeName: System.Security.AccessControl.DirectorySecurity
Name             MemberType Definition                                                                                   
----             ---------- ----------                                                                                   
ModifyAccessRule Method     bool ModifyAccessRule(System.Security.AccessControl.AccessControlModification modification...
ModifyAuditRule  Method     bool ModifyAuditRule(System.Security.AccessControl.AccessControlModification modification,...

How can i access the missing properties?

As you can see from the documentation pages on those particular properties, these are not public properties, they are protected – this means that only the object itself or objects inheriting from this type can access these properties.

https://docs.microsoft.com/en-us/dotnet/api/system.security.accesscontrol.objectsecurity.accessrulesmodified?view=netframework-4.7.2#System_Security_AccessControl_ObjectSecurity_AccessRulesModified

They are not missing, merely hidden and tucked away because they aren’t intended to be accessible. :slight_smile: