Repository navigation
Expand file tree
/
Copy pathCompare-ADUserGroup.ps1
More file actions
58 lines (45 loc) · 2.43 KB
/
Copy pathCompare-ADUserGroup.ps1
File metadata and controls
58 lines (45 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<#
.SYNOPSIS
Vergleicht die Gruppenmitgliedschaften zweier AD-Benutzer.
.DESCRIPTION
Fragt interaktiv nach zwei Benutzern (Name oder SamAccountName, Wildcards
erlaubt) und stellt gegenueber, welche Gruppen beide haben und welche nur
einer hat.
Der typische Anwendungsfall: ein neuer Mitarbeiter soll dieselben Rechte
bekommen wie ein bestehender, oder es ist unklar, warum einer von beiden
auf etwas zugreifen kann und der andere nicht.
.NOTES
Die Vorgabewerte fuer beide Benutzer stehen als $user1default und
$user2default am Dateianfang.
#>
# Change the two lines if you do not want to input it
$user1default = "my.user1"
$user2default = "my.user2"
# do not change anything below this line
$user1 = ""
$user1 = ""
if (!($user1 = Read-Host ("Please enter User 1: [$user1default]"))) { $user1 = $user1default }
if (!($user2 = Read-Host ("Please enter User 2: [$user2default]"))) { $user2 = $user2default }
# Replace double Wildcards with a single one
$user1 = ("*" + $user1 + "*").Replace('**', '*')
$user2 = ("*" + $user2 + "*").Replace('**', '*')
Write-Host("{0} and {1} will be searched..." -f $user1,$user2) -ForegroundColor Green
# Now get the AD Users
$user1ADObjects = get-aduser -Filter * -Properties MemberOf | Where-Object { ($_.Name -like $user1) -or ($_.samAccountName -like $user1) }
$user2ADObjects = get-aduser -Filter * -Properties MemberOf | Where-Object { ($_.Name -like $user2) -or ($_.samAccountName -like $user2) }
# If the result contain more than one user, choose one
if ($user1ADObjects.Count -ge 2) {
$user1auswahl = $user1ADObjects | Out-GridView -Title "More than one possible User. Please choose User 1" -PassThru
}
if ($user2ADObjects.Count -ge 2) {
$user2auswahl = $user2ADObjects | Out-GridView -Title "More than one possible User. Please choose User 2" -PassThru
}
# Vergleichen der User
if ($user1auswahl -and $user2auswahl) {
Write-Host("Group memberships of {0} and {1} will be compared..." -f $user1auswahl.Name,$user2auswahl.Name) -ForegroundColor Green
$groupsUser1 = $user1auswahl.MemberOf | Get-ADGroup
$groupsUser2 = $user2auswahl.MemberOf | Get-ADGroup
$comparision = Compare-Object -ReferenceObject $groupsUser1 -DifferenceObject $groupsUser2 -Property Name
$comparision | Out-GridView -Title ($user1auswahl.Name + " <-> " + $user2auswahl.Name)
}
if ((-not $PSScriptRoot) -or ($PSVersionTable.PSVersion.Major -le 5)) {Read-Host("Press enter")} # for < Powershell 7