Членство в группах — это фундаментальный аспект управления пользователями в Active Directory (AD). При работе с ADSI (интерфейсами службы Active Directory) и OpenQuery вы можете использовать различные методы для запроса и анализа членства в группах. В этой статье мы рассмотрим несколько методов вместе с примерами кода, которые помогут вам понять и эффективно использовать эти методы.
Метод 1. Использование запросов LDAP в PowerShell
PowerShell предоставляет мощный и гибкий способ взаимодействия с Active Directory. Вы можете использовать запросы LDAP для получения информации о членстве в группах. Вот пример:
$groupDN = "CN=GroupName,OU=Groups,DC=example,DC=com"
$ldapFilter = "(member:1.2.840.113556.1.4.1941:= $groupDN)"
$properties = @("sAMAccountName", "displayName")
$adSearcher = [adsisearcher]"(&(objectClass=user)$ldapFilter)"
$adSearcher.PropertiesToLoad.AddRange($properties)
$members = $adSearcher.FindAll()
foreach ($member in $members) {
$sAMAccountName = $member.Properties["sAMAccountName"]
$displayName = $member.Properties["displayName"]
Write-Host "User: $displayName ($sAMAccountName)"
}
Метод 2: запрос членства в группе с помощью VBScript
Если вы предпочитаете VBScript, вы можете добиться аналогичных результатов, используя ADSI. Вот пример:
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
strGroupDN = "CN=GroupName,OU=Groups,DC=example,DC=com"
strQuery = "(&(objectClass=user)(memberOf=" & strGroupDN & "))"
objCommand.CommandText = strQuery
Set objRecordSet = objCommand.Execute
Do Until objRecordSet.EOF
strUsername = objRecordSet.Fields("sAMAccountName").Value
strDisplayName = objRecordSet.Fields("displayName").Value
WScript.Echo "User: " & strDisplayName & " (" & strUsername & ")"
objRecordSet.MoveNext
Loop
Метод 3: использование Get-ADGroupMember в PowerShell
Еще один командлет PowerShell, Get-ADGroupMember, упрощает процесс получения членов группы. Вот пример:
$groupName = "GroupName"
$members = Get-ADGroupMember -Identity $groupName
foreach ($member in $members) {
$sAMAccountName = $member.sAMAccountName
$displayName = $member.Name
Write-Host "User: $displayName ($sAMAccountName)"
}
В этой статье мы рассмотрели несколько методов запроса и анализа членства в группах с помощью ADSI OpenQuery. Мы обсудили, как использовать запросы LDAP в командлетах PowerShell, VBScript и PowerShell, таких как Get-ADGroupMember. Используя эти методы, вы можете эффективно управлять информацией о членстве в группах и получать ее из Active Directory. Понимание членства в группах имеет решающее значение для обеспечения надлежащего контроля доступа и управления пользователями в средах Windows Server.
Не забудьте адаптировать предоставленные примеры кода к вашим конкретным настройкам Active Directory, именам доменов и групп. Имея в своем распоряжении эти методы, вы можете уверенно работать с ADSI OpenQuery для управления членством в группах в Active Directory.