ConvertFrom-SddlString

将 SDDL 字符串转换为自定义对象。

语法

ConvertFrom-SddlString
                [-Sddl] <String>
                [-Type <Object>]
                [<CommonParameters>]

说明

ConvertFrom-SddlString cmdlet 使用以下属性将安全描述符定义语言字符串转换为自定义 PSCustomObject 对象:Owner、Group、DiscretionaryAcl、SystemAcl 和 RawDescriptor。

Owner、Group、DiscretionaryAcl 和 SystemAcl 属性包含 SDDL 字符串中指定的访问权限的可读文本表示形式。

此 cmdlet 在 PowerShell 5.0 中引入。

示例

示例 1:将文件系统访问权限 SDDL 转换为 PSCustomObject

$acl = Get-Acl -Path C:\Windows
ConvertFrom-SddlString -Sddl $acl.Sddl

第一个命令使用 Get-Acl cmdlet 获取 C:\Windows 文件夹的安全描述符,并将其保存在变量中。

第二个命令使用 ConvertFrom-SddlString cmdlet 获取 SDDL 字符串的文本表示形式,该字符串包含在表示安全描述符的对象 Sddl 属性中。

示例 2:将注册表访问权限 SDDL 转换为 PSCustomObject

$acl = Get-Acl HKLM:\SOFTWARE\Microsoft\
ConvertFrom-SddlString -Sddl $acl.Sddl -Type RegistryRights

第一个命令使用 Get-Acl cmdlet 获取 HKLM:\SOFTWARE\Microsoft\ 项的安全描述符,并将其保存在变量中。

第二个命令使用 ConvertFrom-SddlString cmdlet 获取 SDDL 字符串的文本表示形式,该字符串包含在表示安全描述符的对象 Sddl 属性中。

它使用 -Type 参数指定 SDDL 字符串表示注册表安全描述符。

示例 3:使用 ConvertFrom-SddlString(带和不带“-Type”参数)将注册表访问权限 SDDL 转换为 PSCustomObject

$acl = Get-Acl -Path HKLM:\SOFTWARE\Microsoft\

ConvertFrom-SddlString -Sddl $acl.Sddl | Foreach-Object {$_.DiscretionaryAcl[0]}

BUILTIN\Administrators: AccessAllowed (ChangePermissions, CreateDirectories, Delete, ExecuteKey, FullControl, GenericExecute, GenericWrite, ListDirectory, ReadExtendedAttributes, ReadPermissions, TakeOwnership, Traverse, WriteData, WriteExtendedAttributes, WriteKey)

ConvertFrom-SddlString -Sddl $acl.Sddl -Type RegistryRights | Foreach-Object {$_.DiscretionaryAcl[0]}

BUILTIN\Administrators: AccessAllowed (ChangePermissions, CreateLink, CreateSubKey, Delete, EnumerateSubKeys, ExecuteKey, FullControl, GenericExecute, GenericWrite, Notify, QueryValues, ReadPermissions, SetValue, TakeOwnership, WriteKey)

第一个命令使用 Get-Acl cmdlet 获取 HKLM:\SOFTWARE\Microsoft\ 项的安全描述符,并将其保存在变量中。

第二个命令使用 ConvertFrom-SddlString cmdlet 获取 SDDL 字符串的文本表示形式,该字符串包含在表示安全描述符的对象 Sddl 属性中。

它不使用 -Type 参数,因此显示的访问权限适用于文件系统。

第三个命令使用具有 -Type 参数的 ConvertFrom-SddlString cmdlet,因此返回的访问权限适用于注册表。

示例 4:将 Active Directory 访问权限 SDDL 转换为 PSCustomObject

$user = [ADSI]"LDAP://CN=username,CN=Users,DC=domain,DC=com"
ConvertFrom-SddlString $user.psbase.ObjectSecurity.Sddl -Type ActiveDirectoryRights

第一个命令使用 Active Directory 服务接口 (ADSI) 获取用户对象并将其保存在变量中。

第二个命令使用 ConvertFrom-SddlString cmdlet 获取 SDDL 字符串的文本表示形式,该字符串包含在表示安全描述符的对象 Sddl 属性中。

它使用 -Type 参数指定 SDDL 字符串表示 Active Directory 安全描述符。

参数

-Sddl

指定表示 SDDL 语法中安全描述符的字符串。

类型:String
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-Type

指定 SDDL 字符串表示的权限类型。

此参数的可接受值为:

  • FileSystemRights
  • RegistryRights
  • ActiveDirectoryRights
  • MutexRights
  • SemaphoreRights
  • CryptoKeyRights
  • EventWaitHandleRights

默认情况下,cmdlet 使用文件系统权限。

PowerShell v6 及更高版本不支持 CryptoKeyRights 和 ActiveDirectoryRights

类型:Object
接受的值:FileSystemRights, RegistryRights, ActiveDirectoryRights, MutexRights, SemaphoreRights, CryptoKeyRights, EventWaitHandleRights
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

输入

String

可以通过管道将 SDDL 字符串传递给此 cmdlet。