Изучение членства в группах с помощью ADSI OpenQuery: методы и примеры кода

Членство в группах — это фундаментальный аспект управления пользователями в 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.