functions/public/Invoke-AZParallelProxy.ps1
|
function Invoke-AZParallelProxy { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [string[]]$Subscriptions, [Parameter(Mandatory = $true)] [ScriptBlock]$ScriptBlock, [Parameter(Mandatory = $false)] [Int]$ThrottleLimit = 5 ) $combinedScriptBlockString = '' $contextScriptBlock = { Write-Verbose "Processing subscription: $_" -Verbose $context = Set-AzContext -Subscription $_ -Scope Process } $combinedScriptBlockString += $contextScriptBlock.ToString() + "`n" $combinedScriptBlockString += $ScriptBlock.ToString() $scriptBlockCombined = [scriptblock]::Create($combinedScriptBlockString) $params = @{ InputObject = $Subscriptions ScriptBlock = $scriptBlockCombined ThrottleLimit = $ThrottleLimit ImportUserVariables = $true } Invoke-ForEachParallelProxy @params } |