Skip to content

Instantly share code, notes, and snippets.

@chipitsine
Last active August 29, 2015 14:21
Show Gist options
  • Save chipitsine/49e1c768f1bdf7238720 to your computer and use it in GitHub Desktop.
Save chipitsine/49e1c768f1bdf7238720 to your computer and use it in GitHub Desktop.
параллельная обработка массива пользователей
#requires -Version 4.0
#requires -Modules ActiveDirectory
ipmo ActiveDirectory
cls
$queue = [System.Collections.Queue]::Synchronized( (New-Object System.Collections.Queue) )
[array]$Report = @()
gwmi –class Win32_processor | % {$ncpu=$null}{$ncpu+=$_.NumberOfLogicalProcessors}
$users = Get-ADUser -Server m1dc2.m1.kontur -Filter '*' -SearchBase 'OU=Пользователи из КС,OU=user_m1,DC=m1,DC=kontur'
foreach($user in $users) {
$queue.Enqueue($user)
}
Function Runner {
If ($queue.count -gt 0) {
$User = $queue.Dequeue()
##
## Do some job
##
## ...
## Collect report
$Global:Report += $User
}
}
for( $i = 0; $i -lt ($ncpu,$queue.count | Measure -Max).Maximum; $i++ ) {
Runner
}
$Report.Count
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment