# import AD Module Import-Module activedirectory #Set-ExecutionPolicy unrestricted #--------------------------- #-------- Variable --------- #--------------------------- $i=0 #--------------------------- #------- Functions --------- #--------------------------- function Get-ADGroupName ([string] $ADDistinguishedName) { $ADGrpName= (Get-ADGroup -Filter "DistinguishedName -eq '$ADDistinguishedName'").SamAccountName return $ADGrpName } function Get-GroupMemberOf ([string] $ADGroupName) { if ($ADGroupName -eq "# Developer") { return } # prevent recursing $ii++; $a=0 $Message=""; $Prefix="" $GroupCategory=""; $GroupScope=""; $GroupName="" For ($a=0; $a -lt $ii; $a++) {$Prefix = $Prefix + " "} $DNs=(Get-ADGroup $ADGroupName -Properties *).MemberOf if ($DNs.count -ne 0) { foreach ($DN in $DNs) { $GroupName = (Get-ADGroupName $DN) $GroupCategory = (Get-ADGroup $GroupName -Properties *).GroupCategory $GroupScope = (Get-ADGroup $GroupName -Properties *).GroupScope $Message="$Prefix $ADGroupName => $GroupName [$GroupCategory - $GroupScope]" Write-Output $Message Get-GroupMemberOf $GroupName ' ' }# End ForEach }# End IF }#End Function function Get-UserMemberships ([string] $ADUserSID) { $ADUser = Get-ADUser $ADUserSID -Properties * $ADUserMembers=$ADUser.MemberOf $ADUserName = $ADUser.name Write-Host "AD-User: $ADUserName ($ADUserSID)" Write-Output "AD-User: $ADUserName" #PrimaryGroup $ADPrimaryGroupDN = (Get-ADUser -Properties * -Filter "SID -eq '$ADUserSID'").PrimaryGroup $ADPrimaryGroupName=(Get-ADGroupName $ADPrimaryGroupDN) $ADGroupCategory=(Get-ADGroup $ADPrimaryGroupName).GroupCategory $ADGroupScope=(Get-ADGroup $ADPrimaryGroupName).GroupScope $Message = "Primary Group: $ADPrimaryGroupName [$ADGroupCategory, $ADGroupScope]" Write-Output $Message #Other groups foreach ($ADUserMember in $ADUserMembers) { $i++ $ADGroupName = (Get-ADGroupName $ADUserMember) $ADGroupCategory=(Get-ADGroup $ADGroupName).GroupCategory $ADGroupScope=(Get-ADGroup $ADGroupName).GroupScope $Message = "($i) $ADGroupName [$ADGroupCategory, $ADGroupScope]" Write-Output $Message Get-GroupMemberOf $ADGroupName ' ' Write-Output " " } } function Get-AllMembershipsOfUsers([string] $ADGroupName) { $i=0 $devadmaccounts = get-adgroupmember -Identity $ADGroupName -Recursive foreach ($devADM in $devadmaccounts) { Get-UserMemberships $devADM.SID Write-Output "======================================================================================================" } } #----------------------------------------------------------------- Clear-Host [string] $ADGroupName [string] $date = Get-Date -Format "yyyy-MM-dd HHmm" $ADGroupName = "# Developer ADM" Get-AllMembershipsOfUsers $ADGroupName | Out-file "$date Developer ADM.txt" $ADGroupName = "Domain Admins" Get-AllMembershipsOfUsers $ADGroupName | Out-file "$date Domain Admins.txt" $ADGroupName = "# Developer" Get-AllMembershipsOfUsers $ADGroupName | Out-file "$date Developer.txt" $ADGroupName = "# Interne Automatisering Team-Assistent" Get-AllMembershipsOfUsers $ADGroupName | Out-file "$date Interne Automatisering Team-Assistent.txt" $ADGroupName = "# Interne Automatisering" Get-AllMembershipsOfUsers $ADGroupName | Out-file "$date Interne Automatisering.txt"