Private/Process-ADObjects.ps1
|
function Process-ADObjects { [CmdletBinding()] param( [Parameter(Mandatory)] [string]$ObjectType, [Parameter(Mandatory)] [System.Collections.IEnumerable]$Objects, [Parameter(Mandatory)] [scriptblock]$ProcessingScript ) $totalCount = ($Objects | Measure-Object).Count $counter = 0 $results = @() foreach ($object in $Objects) { $counter++ $percentComplete = ($counter / $totalCount) * 100 $currentItem = switch ($ObjectType) { "Users" { $object.SamAccountName } "Computers" { $object.Name } "Groups" { $object.Name } default { "Item $counter" } } $activityName = "Processing $ObjectType" $statusMessage = "Processing item $counter of $totalCount" Show-ProgressHelper ` -Activity $activityName ` -Status $statusMessage ` -CurrentOperation $currentItem ` -PercentComplete $percentComplete $results += & $ProcessingScript $object } Show-ProgressHelper -Activity "Processing $ObjectType" -Status "Complete" -Completed return $results } |