Public/Get-UserProvisioningSyncSessionOperationStatistics.ps1

function Get-UserProvisioningSyncSessionOperationStatistics {
    [CmdletBinding()]
    [OutputType([hashtable])]
    Param(
        [Parameter(Mandatory = $false, ValueFromPipeline = $true)]
        $Operation
    )

    Begin {
        $Script:Statistics = @{
            "Set-ADUser" = 0
            "Remove-ADObject" = 0
            "New-ADUser" = 0
            "Rename-ADObject" = 0
            "Move-ADObject" = 0
            "Attributes" = @{}
        }
    }

    Process {
        if($Operation.Action) {
            $Script:Statistics[$Operation.Action] += 1
        }

        if($Operation.Parameters) {
            foreach($key in $Operation.Parameters.Keys) {
                if($Key -in "identity") {

                } elseif($key -eq "OtherAttributes") {
                    foreach($attrKey in $Operation.Parameters.OtherAttributes.Keys) {
                        if(-not $Script:Statistics["Attributes"].ContainsKey($attrKey)) {
                            $Script:Statistics["Attributes"][$attrKey] = 0
                        }
                        $Script:Statistics["Attributes"][$attrKey] += 1
                    }
                } elseif($key -eq "Clear") {
                    foreach($attrKey in $Operation.Parameters.Clear.Keys) {
                        if(-not $Script:Statistics["Attributes"].ContainsKey($attrKey)) {
                            $Script:Statistics["Attributes"][$attrKey] = 0
                        }
                        $Script:Statistics["Attributes"][$attrKey] += 1
                    }
                } else {
                    $Script:Statistics["Attributes"][$key] += 1
                }
            }
        }
    }

    End {
        return $Script:Statistics
    }
}