I have a couple of status check functions which report on long-running functions (e.g. mailbox exports) which are foreach-ing against a list of user names.
The long running functions all seem to run concurrently. However, I would like the status checks to also execute simultaneously. None of the other functions send out-put to the console.
What is an elegant way of accomplishing this feat?
function MailboxExportRequestStatus { $statReport = Get-MailboxExportRequestStatistics -Identity $user_name\mailboxExport -IncludeReport $i = 0 while ( $statReport.status -eq "Queued" ) { $statReport = Get-MailboxExportRequestStatistics -Identity $user_name\mailboxExport -IncludeReport Write-Host "`t`t`tExport request for" $user_name "has been in queue for" ($i * 15) "seconds" sleep -Seconds 15 $i++ } while ( $statReport.status -eq "InProgress" ) { $statReport = Get-MailboxExportRequestStatistics -Identity $user_name\mailboxExport -IncludeReport Write-Host "`t`tExport request for" $user_name "is in progress. It is" $statReport.PercentComplete"% complete" sleep -Seconds 15 } while ( $statReport.status -eq "Completed" ) { $statReport = Get-MailboxExportRequestStatistics -Identity $user_name\mailboxExport -IncludeReport Write-Host "`t`t`t`tCompleted! The mailbox esport request for" $user_name "is now"$statReport.PercentComplete"percent complete" sleep -Seconds 2 } Get-MailboxExportRequestStatistics -Identity $user_name\mailboxExport -IncludeReport }
foreach ( $user_name in $user_names)
{
spam
eggs
MailboxExportRequestStatus
foo
bar
}