Public/Show-UserProvisioningSyncSessionOperation.ps1
|
<# .SYNOPSIS Prints all planned operations to screen, including a summary over each attribute and method .EXAMPLE $Operations | Show-UserProvisioningSyncSessionOperation #> function Show-UserProvisioningSyncSessionOperation { [CmdletBinding(SupportsShouldProcess = $true)] Param( # The operation to show [Parameter(ValueFromPipeline = $true)] $Operation, [Parameter()] [Switch] $Single, [Parameter(Mandatory = $false)] [Int] $Counter, [Parameter()] [Switch] $NoDetails ) Begin { if (!$Single.IsPresent) { Write-Output "[group]Operations report" } $Methods = [ordered] @{ "Set-ADUser" = 0 "Remove-ADObject" = 0 "New-ADUser" = 0 "Rename-ADObject" = 0 "Move-ADObject" = 0 } } Process { $Methods[$Operation.Action] += 1 $CounterString = "" if($Counter) { $CounterString = "[$($Counter)] " } if ($Operation.Action -eq "Set-ADUser") { Write-Output "$($PSStyle.Foreground.Yellow)$CounterString$($Operation.Action)$($PSStyle.Reset) $($Operation.Identity)" if($NoDetails.IsPresent) {return} $Operation.Parameters.GetEnumerator() | ForEach-Object { if ($_.Key -eq "Replace") { Write-Output " - $($_.Key):" $_.Value.GetEnumerator() | ForEach-Object { $Attribute = $_.Key $Value = $_.Value $OldValue = $Operation.OldValues[$Attribute] " - {0,-30} : $($PSStyle.Foreground.BrightRed){1}$($PSStyle.Reset) -> $($PSStyle.Foreground.BrightGreen){2}$($PSStyle.Reset)" -f $Attribute, ($OldValue ?? "<null>"), ($Value ?? "<null>") | Write-Output } } elseif ($_.Key -eq "Clear") { Write-Output " - $($_.Key):" $_.Value | ForEach-Object { $Attribute = $_ $OldValue = $Operation.OldValues[$Attribute] " - {0,-30} : $($PSStyle.Foreground.BrightRed){1}$($PSStyle.Reset) -> $($PSStyle.Foreground.BrightGreen)<cleared>$($PSStyle.Reset)" -f $Attribute, ($OldValue ?? "<null>") | Write-Output } } else { $Attribute = $_.Key $Value = $_.Value $OldValue = $Operation.OldValues[$Attribute] " - {0,-30} : $($PSStyle.Foreground.BrightRed){1}$($PSStyle.Reset) -> $($PSStyle.Foreground.BrightGreen){2}$($PSStyle.Reset)" -f $Attribute, ($OldValue ?? "<null>"), ($Value ?? "<null>") | Write-Output } } } elseif ($Operation.Action -eq "New-ADUser") { Write-Output "$($PSStyle.Foreground.Green)$CounterString$($Operation.Action)$($PSStyle.Reset) $($Operation.Identity)" if($NoDetails.IsPresent) {return} $Operation.Parameters.GetEnumerator() | ForEach-Object { if ($_.Key -in "OtherAttributes") { Write-Output " - $($_.Key):" $_.Value.GetEnumerator() | ForEach-Object { " - {0,-30} : {1}" -f $_.Key, ($_.Value ?? "<null>") | Write-Output } } else { " - {0,-30} : {1}" -f $_.Key, ($_.Value ?? "<null>") | Write-Output } } } elseif ($Operation.Action -eq "Remove-ADUser") { Write-Output "$($PSStyle.Foreground.Red)$CounterString$($Operation.Action)$($PSStyle.Reset) $($Operation.Identity)" if($NoDetails.IsPresent) {return} } elseif ($Operation.Action -eq "Rename-ADObject") { Write-Output "$($PSStyle.Foreground.Yellow)$CounterString$($Operation.Action)$($PSStyle.Reset) $($Operation.Identity)" if($NoDetails.IsPresent) {return} $Operation.Parameters.GetEnumerator() | ForEach-Object { $OldValue = $Operation.OldValues[$_.Key] " - {0,-30} : {1} -> {2}" -f $_.Key, ($OldValue ?? "<null>"), ($_.Value ?? "<null>") | Write-Output } } elseif ($Operation.Action -eq "Move-ADObject") { Write-Output "$($PSStyle.Foreground.Yellow)$CounterString$($Operation.Action)$($PSStyle.Reset) $($Operation.Identity)" if($NoDetails.IsPresent) {return} $Operation.Parameters.GetEnumerator() | ForEach-Object { $OldValue = $Operation.OldValues[$_.Key] " - {0,-30} : {1} -> {2}" -f $_.Key, ($OldValue ?? "<null>"), ($_.Value ?? "<null>") | Write-Output } } else { Write-Warning "Unknown operation action '$($Operation.Action)'." } } End { if (!$Single.IsPresent) { Write-Output "[endgroup]" Write-Output "Operations summary:" $Methods.GetEnumerator() | ForEach-Object { $Color = $PSStyle.Foreground.Green $Color = $_.Key -eq "Remove-ADObject" ? $PSStyle.Foreground.BrightRed : $Color $Color = $_.Key -eq "New-ADUser" ? $PSStyle.Foreground.BrightGreen : $Color $Color = $_.Key -eq "Set-ADUser" ? $PSStyle.Foreground.Yellow : $Color $Color = $_.Key -eq "Rename-ADObject" ? $PSStyle.Foreground.Magenta : $Color $Color = $_.Key -eq "Move-ADObject" ? $PSStyle.Foreground.Blue : $Color Write-Output " - $($_.Value) x $($Color)$($_.Key)$($PSStyle.Reset)" } } } } |