Я пытаюсь найти группы с помощью GetAuthorizationGroups
, и это вроде как работает, так как я могу вернуть IEnumerable, но большинство элементов, которые я возвращаю, выдают исключение, когда я пытаюсь их прочитать:
System.Runtime.InteropServices.COMException:
The specified directory service attribute or value does not exist.
Если вы подключите свой собственный домен, контейнер и имя пользователя, вы должны получить список их групп:
Powershell:
[System.Reflection.Assembly]::LoadWithPartialName("System.DirectoryServices.AccountManagement")
[System.Reflection.Assembly]::LoadWithPartialName("System.DirectoryServices")
[System.Reflection.Assembly]::LoadWithPartialName("System.DirectoryServices.ActiveDirectory")
$username = "a-user-such-as-yourself"
$principalContext = new-object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext "Domain", "yourADdomain.com", "OU=whatever,OU=andever,DC=yourADdomain,DC=com"
$principal = [System.DirectoryServices.AccountManagement.UserPrincipal]::FindByIdentity($principalContext, $username)
$groups = $principal.GetAuthorizationGroups()
Write-Output $groups
Если я игнорирую всеисключения, он успешно возвращает группы «Все», «Прошедшие проверку» и еще пару, но вызывает исключение для других.
Если я запускаю это как администратор домена, он работает нормально, возвращаявсе группы без каких-либо исключений.
Итак, я предполагаю, что пользователю, выполняющему это, требуется какое-то разрешение в Active Directory.Но какой?