如何将“Convert-SidToName”应用于条目列表?

如何将“Convert-SidToName”应用于条目列表?

我使用 PowerView 枚举活动目录,并且我有这个集合,SecurityIdentifiers我想使用 PowerView 函数将其转换为可读名称Convert-SidToName。我希望 Powershell 能够以某种方式将这些值传递给函数,但不知道如何操作:

PS C:\Users\Administrator\Desktop> Get-ObjectAcl -Identity "DnsAdmins" | ? {$_.ActiveDirectoryRights -eq "GenericAll" } | select SecurityIdentifier

SecurityIdentifier                         
------------------                         
S-1-5-21-976142013-3766213998-138799841-512
S-1-5-32-548                               
S-1-5-18                                   
S-1-5-21-976142013-3766213998-138799841-519

就像是:

PS C:\Users\Administrator\Desktop> Get-ObjectAcl -Identity "DnsAdmins" | ? {$_.ActiveDirectoryRights -eq "GenericAll" } | select SecurityIdentifier | Convert-SidToName

只是给出了语法错误:

ConvertFrom-SID : Cannot validate argument on parameter 'ObjectSid'. The argument 
"@{SecurityIdentifier=S-1-5-21-976142013-3766213998-138799841-519}" does not match the "^S-1-.*" pattern. Supply an 
argument that matches "^S-1-.*" and try the command again.

答案1

将其替换select SecurityIdentifierselect -ExpandProperty SecurityIdentifier将 SID 值作为字符串列表而不是对象进行管道传输。

根据是否ConvertFrom-SID接受字符串列表,您可能还需要用 foreach 替换基本管道| foreach { ConvertFrom-SID $_ }


Get-Acl另外,您可能更喜欢使用路径的内置命令ad:,它会在可能的情况下自动将 SID 转换为 ID:

(Get-Acl -Path "ad:$((Get-ADGroup "DNSAdmins").DistinguishedName)").Access |
  ? {$_.ActiveDirectoryRights -eq "GenericAll" } | 
  select -Expand IdentityReference | sort

# result:

Value
-----------------                 
CONTOSO\Domain Admins             
CONTOSO\Enterprise Admins         
CONTOSO\Enterprise Key Admins     
etc...

相关内容