The estimated reading time 2 minutes
In daily life there are a lot situation where you have to copy members of AD groups, or checking if someone is member of an AD group. Therefore I created this blogpost to provide a small assistance doing this tasks via powershell.
Function to check user Group Membership
Here is a short function checking if an user is member of a special group:
function Check-UserInGroup {
[CmdletBinding()]
param (
[Parameter(
Mandatory=$true,
Position=0)]
[string] $samaccount,
[Parameter(Mandatory=$true)]
[string] $groupsamaccount
)
$user = $samaccount
$group = "$groupsamaccount"
[string]$memberofs = Get-ADuser -Identity "$user" -Properties MemberOf | Select-Object MemberOf -ExpandProperty MemberOf
If ($memberofs -match $group) {
return $true
} Else {
return $false
}
}
How can I use this function? Here is a short example:
$membergroupb = Check-UserInGroup -samaccount "user-a" -groupsamaccount "group-b"
if($membergroupb -eq $false){
Add-ADGroupMember -identity "group-b" -members "user-a"
}
First line checks if the user is member or not (TRUE or FALSE), and with the IF you can add an action if the user is not a member (for example adding)
List all groups of special user
If you want to get all groupmemberships from one special user you can use this kind of onliner:
Get-ADPrincipalGroupMembership -Identity USERSAMACCOUNTNAME | select SamAccountName,name
If you want to exclude some special groups, there is an extension you can add to the command above:
Get-ADPrincipalGroupMembership -Identity USERSAMACCOUNTNAME | select SamAccountName,name |where{$_.name -ne "SAMACCOUNTGROUPNOTWANTED"} | sort name
#multiple groups not wanted
Get-ADPrincipalGroupMembership -Identity USERSAMACCOUNTNAME | select SamAccountName,name |where{$_.name -ne "SAMACCOUNTGROUPNOTWANTED" -and $_.name -ne "SAMACCOUNTANOTHERGROUP" } | sort name
Function check if an AD group exists
Checking if an AD group exists already in the current AD
function Check-Groupexists {
[CmdletBinding()]
param (
[Parameter(
Mandatory=$true,
Position=0)]
[string] $groupname,
[Parameter(Mandatory=$true)]
[string] $dc
)
$gn = $groupname
$domaincontroller = $dc
$groupexists = $(try {Get-ADGroup -Filter "SamAccountName -eq '$gn'"} catch {$null})
If ($groupexists) {
return $true
} Else {
return $false
}
}
How to use this function? See this expample.
$grpname = "NEWADGROUPNAME"
$DC = "DOMAINCONTROLLER"
if(Check-Groupexists -groupname $grpname -dc $DC)
{
Write-Host "$grpname already exists!" -ForegroundColor Yellow
}
else{
Write-Host "$grpname available..." -ForegroundColor Green
New-ADGroup -SamAccountName "$grpname" -DisplayName "$grpname" -Server "$DC" -GroupScope Global -Name "$grpname" -Description "DESCRIPTION" -Path "distinguished name to OU"
}
This short script checks if the name of the group is available, and if its not used it creates a new AD group
Have fun with this powershell functions an small scripts. If you liked this article please click on helpful.


