Tests/Show-ADObjectChanges.ps1
|
# Source: https://learn.microsoft.com/en-us/archive/blogs/janesays/compare-all-properties-of-two-objects-in-windows-powershell param( [Parameter(Mandatory)] [string]$DN ) $ReferenceObject = Get-ADObject -Identity $DN -Properties * Read-Host 'Make your changes and press Enter' $DifferenceObject = Get-ADObject -Identity $DN -Properties * $ObjectProperties = $ReferenceObject | Get-Member -MemberType Property, NoteProperty | ForEach-Object Name $ObjectProperties += $DifferenceObject | Get-Member -MemberType Property, NoteProperty | ForEach-Object Name $ObjectProperties = $ObjectProperties | Sort-Object | Select-Object -Unique $Differences = @() foreach ($objectproperty in $ObjectProperties) { $difference = Compare-Object $ReferenceObject $DifferenceObject -Property $objectproperty if ($difference) { $differenceproperties = @{ PropertyName = $objectproperty RefValue = ($difference | Where-Object { $_.SideIndicator -eq '<=' } | ForEach-Object $($objectproperty)) DiffValue = ($difference | Where-Object { $_.SideIndicator -eq '=>' } | ForEach-Object $($objectproperty)) } $Differences += New-Object PSObject -Property $differenceproperties } } if ($Differences) { return ( $Differences | Select-Object PropertyName, RefValue, DiffValue ) } |