1

假设我们有一个 AD 组,其中一些成员是外部安全主体。在这种情况下,成员属性中的值的格式如下:

CN=S-1-5-21-XXXX-XXXXXXXX-XXXXXXXXX-XXXX,CN=ForeignSecurityPrincipals,DC=dmc,DC=001,DC=net

我们有一个翻译命令来跟踪使用 SID (S-1-5-21-XXXX-XXXXXXXX-XXXXXXXXX-XXXX) 的成员;

([System.Security.Principal.SecurityIdentifier] $SID).Translate([System.Security.Principal.NTAccount]).value

powershell有没有办法从成员属性中提取SID?

4

2 回答 2

3

您可以使用正则表达式。像这样的东西应该工作:

$targetString = 'CN=S-1-5-21-2440625168-151597401-477403795-1001,CN=ForeignSecurityPrincipals,DC=dmc,DC=001,DC=net'

$regEx = '(?<SID>S-\d-\d+-(\d+-){1,14}\d+)'

if($targetString -match $regEx) {
    ([System.Security.Principal.SecurityIdentifier] $Matches.SID).Translate([System.Security.Principal.NTAccount]).value
}
于 2019-10-10T22:05:03.187 回答
0

最简单的方法是使用 SubString 函数:

$CN = 'CN=S-1-5-21-2440625168-151597401-477403795-1001,CN=ForeignSecurityPrincipals,DC=dmc,DC=001,DC=net'

$SID = $CN.SubString(3, 45)

([System.Security.Principal.SecurityIdentifier] $SID).Translate([System.Security.Principal.NTAccount]).value
于 2019-10-10T22:23:07.730 回答