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 } } |