Если вы посмотрите на тип объекта, он даст некоторые подсказки.
PS C:\Users\jacob> $acl = get-acl
PS C:\Users\jacob> $acl.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False DirectorySecurity System.Security.AccessControl.FileSystemSecurity
PS C:\Users\jacob> ($acl | select access).getType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False PSCustomObject System.Object
С помощью PSCustomObject
вы можете получить доступ к значениям свойств, используя обозначения .psobject.Properties.value
или .
.
Итак, если мы изолируем объект acesss $access = $acl | select access
и затем обращаемся к значениям свойств, мы получаем информацию, к которой мы стремимся.
PS C:\Users\jacob> $access.PSObject.Properties.Value
FileSystemRights : FullControl
AccessControlType : Allow
IdentityReference : NT AUTHORITY\SYSTEM
IsInherited : False
InheritanceFlags : ContainerInherit, ObjectInherit
PropagationFlags : None
FileSystemRights : FullControl
AccessControlType : Allow
IdentityReference : BUILTIN\Administrators
IsInherited : False
InheritanceFlags : ContainerInherit, ObjectInherit
PropagationFlags : None
FileSystemRights : FullControl
AccessControlType : Allow
IdentityReference : SURFACE\jacob
IsInherited : False
InheritanceFlags : ContainerInherit, ObjectInherit
PropagationFlags : None
В одну строку:
get-acl .\test | select access | % { $_.PSObject.Properties.Value }
Или мы можем урезать его до
get-acl .\test | select access | % { $_.Access }
Или, наконец:
(get-acl .\test | select access).access