Compruebe si un usuario de SharePoint es miembro de un grupo de AD mediante PowerShell
Requisito: comprobar si el usuario de SharePoint es miembro de un grupo de Active Directory mediante PowerShell
Solución: Aunque podemos verificar si una cuenta de usuario en particular es miembro de un grupo de seguridad de AD usando cmdlets de PowerShell de AD como Get-ADGroupMember, este es el método nativo para encontrar si una cuenta de usuario específica es un miembro de un grupo determinado de Active Directory.
PowerShell para comprobar si un usuario de SharePoint es miembro de un grupo de Active Directory:
Hay ocasiones en las que es posible que necesite saber si un usuario de SharePoint en particular es miembro de un grupo de Active Directory, ya que el grupo de Active Directory se utiliza como límite de seguridad para SharePoint en muchas organizaciones. Esta publicación de blog le mostrará cómo usar PowerShell para verificar si un usuario es miembro de un grupo de Active Directory.
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Variables
$SiteURL="https://intranet.crescent.com"
$SearchUserAccount = "Crescent\salaudeen"
#Custom Function to Check if User is member of a Active Directory Group
Function Check-UserIsMemberOfADGroup($web,$SearchUserAccount,$GroupName)
{
Try {
#Resolve the AD Group & User in SharePoint
$ADGroup = $web.EnsureUser($GroupName)
$User = $web.EnsureUser($SearchUserAccount)
#Get All Users of the AD Group
$ReachedMax = $false
$Users = [Microsoft.SharePoint.Utilities.SPUtility]::GetPrincipalsInGroup($web, $ADGroup, ([Int]::MaxValue)-1, [ref]$ReachedMax)
#Check if user found in the members list
$SearchUser = $Users | Where {$_.PrincipalType -eq "User" -and $_.LoginName -eq $User.UserLogin}
If($SearchUser -ne $Null) { Return $True } else { Return $False }
}
Catch {
write-host -f Red "Error Checking User Membership!" $_.Exception.Message
}
}
#Get the Web
$Web = Get-SPWeb $SiteURL
#Get All AD Groups which has permission to the object such as Web, List, etc
$RoleAssignments = $Web.RoleAssignments | Where { $_.Member.IsDomainGroup}
#Iterate Through permissions of the web
Foreach($RoleAssignment in $RoleAssignments)
{
$IsMember = Check-UserIsMemberOfADGroup $Web $SearchUserAccount $RoleAssignment.Member.Name
If($IsMember)
{
Write-host -f Green $SearchUserAccount is member of the AD Group $RoleAssignment.Member.Name
}
Else
{
Write-host -f Red $SearchUserAccount is not a member of the AD Group $RoleAssignment.Member.Name
}
}
Tenga en cuenta que este script comprueba solo la membresía inmediata: ¡no busca grupos anidados!
Compruebe si un usuario es miembro de un grupo de AD de forma recursiva:
Esta vez, usemos el cmdlet Get-ADGroupMember para verificar de forma recursiva si un usuario determinado es miembro de un grupo de AD. Si necesita verificar si un usuario de SharePoint es miembro de un grupo de Active Directory (AD), puede usar PowerShell para consultar la información de membresía del grupo desde el controlador de dominio.
#Variables
$UserID = "Crescent\salaudeen"
$ADGroup = "Crescent\Palo Alto RAS"
#Extract SamAccountName and AD Group Name
$SamAccountName = $UserID.Substring($UserID.IndexOf("\") + 1)
$ADGroupName = $ADGroup.Substring($ADGroup.IndexOf("\") + 1)
#Get All Members of the AD Group
$GroupMembers = Get-ADGroupMember -identity $ADGroupName -Recursive | Select -ExpandProperty SamAccountName
If($GroupMembers -contains $SamAccountName)
{
Write-host -f Green "User '$UserID' is Member of the AD Group: $ADGroupName"
}
else
{
Write-host -f Red "User '$UserID' is Not a Member of the AD Group: $ADGroupName"
}