Как извлечь идентификатор безопасности из атрибута участника группы? - PullRequest
1 голос
/ 11 октября 2019

Предположим, у нас есть группа AD с некоторыми членами в качестве иностранных участников безопасности. В этом случае формат значений атрибута-члена выглядит следующим образом:

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

У нас есть команда translate для отслеживания члена с использованием SID (S-1-5-21-XXXX-XXXXXXXX-XXXXXXXXX-XXXX);

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

Isесть способ в powershell извлечь SID из атрибута member?

Ответы [ 2 ]

2 голосов
/ 11 октября 2019

Вы можете использовать регулярные выражения. Примерно так должно работать:

$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
}
0 голосов
/ 11 октября 2019

Проще всего будет использовать функцию 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
...