Bir SharePoint Kullanıcısının PowerShell kullanan bir AD Grubunun Üyesi olup olmadığını kontrol edin
Gereksinim: SharePoint Kullanıcısının PowerShell kullanan bir Active Directory Grubunun Üyesi olup olmadığını kontrol edin
Çözüm: Belirli bir kullanıcı hesabının bir AD güvenlik grubunun üyesi olup olmadığını Get-ADGroupMember gibi AD PowerShell cmdlet'lerini kullanarak kontrol edebilsek de, burada belirli bir kullanıcı hesabının bir AD güvenlik grubunun üyesi olup olmadığını bulmanın yerel yöntemi bulunmaktadır. Belirli bir Active Directory grubunun üyesi.
Bir SharePoint Kullanıcısının bir Active Directory Grubunun Üyesi olup olmadığını kontrol etmek için PowerShell:
Active Directory grubu birçok kuruluşta SharePoint için güvenlik sınırı olarak kullanıldığından, belirli bir SharePoint kullanıcısının bir Active Directory grubunun üyesi olup olmadığını bilmenizin gerekebileceği zamanlar olabilir. Bu blog yazısı, bir kullanıcının bir Active Directory grubunun üyesi olup olmadığını kontrol etmek için PowerShell'i nasıl kullanacağınızı gösterecektir.
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
}
}
Lütfen bu komut dosyasının yalnızca anlık üyeliği kontrol ettiğini unutmayın; iç içe geçmiş grupları aramaz!
Bir Kullanıcının bir AD Grubunun Üyesi olup olmadığını yinelemeli olarak kontrol edin:
Bu sefer belirli bir kullanıcının bir AD grubunun üyesi olup olmadığını yinelemeli olarak kontrol etmek için Get-ADGroupMember cmdlet'ini kullanalım. Bir SharePoint kullanıcısının bir Active Directory (AD) grubunun üyesi olup olmadığını kontrol etmeniz gerekiyorsa, grup üyeliği bilgilerini etki alanı denetleyicisinden sorgulamak için PowerShell'i kullanabilirsiniz.
#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"
}