Привет, я работаю с группой Active Directory и пользователями, и я хочу проверить и установить надлежащих пользователей/групп из AD на машины. Проблема заключается в том, когда я перебираю локальные пользователи/группы на какой-либо машине, и есть старые пользователи/группы, которых больше нет в AD POWERSHELL перестанет работать и будет генерировать исключение.POWERSHELL - SID участника не может быть разрешен
Произошла ошибка (1332) при перечислении членства в группе. SID участника не может быть разрешен.
Я знаю, что вызывает эту проблему, но я не знаю, как ее обойти. Основная проблема здесь заключается в том, что ее даже невозможно выполнить итерацию по всему массиву пользователей, если она уже недействительна. Только для этого можно вручную удалить этих недопустимых пользователей.
Я даже видел некоторые сообщения Microsoft о том, что это неправильное поведение и должно быть исправлено, но ничего не было сделано по этому поводу.
Кто-нибудь здесь столкнулся с этой проблемой?
Благодарим за помощь.
$ctype = [System.DirectoryServices.AccountManagement.ContextType]::Machine
$computer = "PC name"
$groupName = "Administrators"
$context = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList $ctype, $computer
$idtype = [System.DirectoryServices.AccountManagement.IdentityType]::SamAccountName
$groupData = [System.DirectoryServices.AccountManagement.GroupPrincipal]::FindByIdentity($context, $idtype, $groupName)
$groupData.Members | select @{N='Server'; E={$computer}}, @{N='Domain'; E={$_.Context.Name}},@{N='Group'; E={$groupName}} , @{N='Account Name/Group'; E={$_.SamAccountName}}
Вот пример кода, который им используется для итерации по локальным пользователям/группам на каком-то ПК.
Есть ли конкретная причина для использования directoryservices.accountmanagement вместо использования стандартных AD-командлетов, таких как get-aduser, get-adgroupmember и т. Д.? Вы могли бы сократить опубликованный фрагмент кода до 1 или 2 (читаемых) строк с помощью командлетов на родном языке. – bluuf
Хорошо с теми командами, которые вы указали, вы получите пользователей, указанных в AD. Мой код регистрируется на компьютере и получает пользователей и группы, которые установлены на компьютере. Это не то же самое. – Mitre
https://connect.microsoft.com/PowerShell/feedback/details/763667/get-local-group-member-an-error-1332-occurred-while-enumerating-the-group-membership это ошибка, которую я говорю около. – Mitre