Public/UserAccess/Compare-ADUser.ps1


<#PSScriptInfo
 
.VERSION 1.0.3
 
.GUID d972299f-af10-4c8b-a5fa-1ce80d8892af
 
.AUTHOR Pierre Smit
 
.COMPANYNAME
 
.COPYRIGHT
 
.TAGS AD
 
.LICENSEURI
 
.PROJECTURI
 
.ICONURI
 
.EXTERNALMODULEDEPENDENCIES
 
.REQUIREDSCRIPTS
 
.EXTERNALSCRIPTDEPENDENCIES
 
.RELEASENOTES
Created [07/06/2019_03:58]
Updated [09/06/2019_09:18]
Updated [15/06/2019_01:11]
Updated [15/06/2019_13:59] Updated Reports
 
.PRIVATEDATA
 
#>
 







<#
 
.DESCRIPTION
Find the diferences in ad groups
 
#>


Param()



Function Compare-ADUser {
    [CmdletBinding()]
    PARAM(
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [ValidateNotNull()]
        [ValidateNotNullOrEmpty()]
        [string]$Username1,
        [Parameter(Mandatory = $true, Position = 1)]
        [ValidateNotNull()]
        [ValidateNotNullOrEmpty()]
        [string]$Username2)


    $ValidUser1 = Get-ADUser $Username1  -Properties * | Select-Object Name, GivenName, Surname, UserPrincipalName, EmailAddress, EmployeeID, EmployeeNumber, HomeDirectory, Enabled, Created, Modified, LastLogonDate, samaccountname
    $ValidUser2 = Get-ADUser $Username2  -Properties * | Select-Object Name, GivenName, Surname, UserPrincipalName, EmailAddress, EmployeeID, EmployeeNumber, HomeDirectory, Enabled, Created, Modified, LastLogonDate, samaccountname
    $userDetailList1 = $ValidUser1.psobject.Properties | Select-Object -Property Name, Value
    $userDetailList2 = $ValidUser2.psobject.Properties | Select-Object -Property Name, Value

    $user1Headding = $ValidUser1.Name
    $user2Headding = $ValidUser2.Name
    $user1HeaddingMissing = $ValidUser1.Name + " Missing"
    $user2HeaddingMissing = $ValidUser2.Name + " Missing"

    $allusergroups1 = Get-ADUser $Username1 -Properties * | Select-Object -ExpandProperty memberof | ForEach-Object { Get-ADGroup $_ } | Select-Object samaccountname
    $allusergroups2 = Get-ADUser $Username2 -Properties * | Select-Object -ExpandProperty memberof | ForEach-Object { Get-ADGroup $_ } | Select-Object samaccountname

    $Compare = Compare-Object -ReferenceObject $allusergroups1 -DifferenceObject $allusergroups2 -Property samaccountname -IncludeEqual

    $SameGroups = $Compare | Where-Object { $_.SideIndicator -eq '==' } | Select-Object samaccountname
    $User1Missing = $Compare | Where-Object { $_.SideIndicator -eq '=>' } | Select-Object samaccountname
    $User2Missing = $Compare | Where-Object { $_.SideIndicator -eq '<=' } | Select-Object samaccountname


    $User1Details = New-Object PSObject  -Property @{
        ValidUser1           = $ValidUser1
        userDetailList1      = $userDetailList1
        user1Headding        = $user1Headding
        user1HeaddingMissing = $user1HeaddingMissing
        allusergroups1       = $allusergroups1
        User1Missing         = $User1Missing
    }
    $User2Details = New-Object PSObject  -Property @{
        ValidUser2           = $ValidUser2
        userDetailList2      = $userDetailList2
        user2Headding        = $user2Headding
        user2HeaddingMissing = $user2HeaddingMissing
        allusergroups2       = $allusergroups2
        User2Missing         = $User2Missing
    }

    $Details = New-Object PSObject  -Property @{
        User1Details = $User1Details
        User2Details = $User2Details
        SameGroups   = $SameGroups
    }
    $Details

} #end Function