azure - Powershell 并行或多线程作业
问题描述
我有以下脚本:
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 上进行。
有可能这样做吗?
谢谢
解决方案
试试这个,我没有测试过,但它应该可以工作。
$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 *
推荐阅读
- java - 如何在 jBPM 中查看自定义流程事件监听器的日志
- android-studio - 按钮为空对象引用(Android Studio)
- flutter - 如何在运行时创建两条线并计算它的颤动角度?
- c++ - MongoDB 中 javascript 函数的替代方案
- reactjs - 制作动态 crud 时是否可以使用 getStaticProps 方法?
- flutter - 错误有没有解决办法:参数'uid'不能有'null'的值,因为它的类型,但是隐含的默认值是'null'
- jenkins - 如何在 jenkinsfile 触发器中定义过滤器逻辑
- javascript - 如何在模板js文件的dom之前加载reactjs dom?
- salesforce - 如何使用 Selenium C# NUnit 框架处理 Salesforce Classic 中的画面警报
- python - 使用键获取值