Параллельная или многопоточная работа Powershell - PullRequest
0 голосов
/ 14 июля 2020

У меня есть следующий сценарий:

   ForEach ($lista in $listas) {                      
  $RG = $lista.rg
  $VM = $lista.vm
  $NIC = $lista.nic                     
  
  Stop-AzVM -ResourceGroupName $RG -Name $VM -Force

  $nic = Get-AzNetworkInterface -ResourceGroupName $RG -Name $NIC
  $nic.EnableAcceleratedNetworking = $false
  $nic | Set-AzNetworkInterface

  Start-AzVM -ResourceGroupName $RG -Name $VM

  }

, который я могу отключить в azure vm ускоренной сети. Он работает нормально, но я хотел бы знать, можно ли его распараллелить, потому что мне нужно сделать это на 20-30 vm.

Можно ли это сделать?

Спасибо

1 Ответ

0 голосов
/ 14 июля 2020

Попробуй, я не тестировал, но, надеюсь, сработает.

$ScriptBlock = {
    param($RG,$VM,$NIC) 
                   
  
  Stop-AzVM -ResourceGroupName $RG -Name $VM -Force

  $nic = Get-AzNetworkInterface -ResourceGroupName $RG -Name $NIC
  $nic.EnableAcceleratedNetworking = $false
  $nic | Set-AzNetworkInterface

  Start-AzVM -ResourceGroupName $RG -Name $VM


}

foreach($lista in $listas) {
    # Execute the jobs in parallel
    Start-Job $ScriptBlock -ArgumentList $lista.rg, $lista.vm, $lista.nic
  
}

# Wait for all to complete
While (Get-Job -State "Running") { Start-Sleep 5 }

# Display output from all jobs
$res += (Get-Job | Receive-Job)

# Cleanup
Remove-Job *
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...