如何在PowerShell中并行使用foreach循环?
在PowerShell中有两种并行使用foreach循环的方法。
使用Foreach-Object-Parallel命令(在PowerShell7.0或更高版本中支持)
在工作流中使用Foreach-Parallel(支持PowerShell5.1或更低版本)
假设我们有Servers.txt,其中包含10台服务器。当我们使用Parallelfor循环时,不能保证首先选择哪个服务器循环,如下所示,并带有两个示例。
使用Foreach-Object-Parallel命令。(不是Foreach-Parallel)
此Foreach-Object-Parallel命令功能已新添加到PowerShell版本7.0或更高版本中。
示例
$servers = Get-Content C:\Temp\Servers.txt
$servers | foreach-Object -parallel{
Write-output "Working on $_"
}输出结果PS C:\> C:\Temp\Test1.ps1 Working on IndiaServer003 Working on IndiaServer002 Working on IndiaServer001 Working on USServer001 Working on IndiaServer005 Working on USServer002 Working on IndiaServer006 Working on NZServer001 Working on NZServer002
如果您有更多服务器,还可以设置-Throttlelimit参数,但需要确保系统不会由于节流阀限制而耗尽,因为它将创建更多的运行空间。
使用PowerShell工作流。
如果使用的是PowerShell5.1,则可以使用工作流功能Foreach-Parallel并行运行循环。例如,
示例
Workflow TestParallel{
Foreach -parallel($server in (Get-Content C:\Temp\Servers.txt)){
Write-Output "Working on $Server"
}
}
TestParallel输出结果PS C:\WINDOWS\system32> C:\Temp\Test1.ps1 Working on NZServer002 Working on NZServer001 Working on USServer002 Working on USServer001 Working on IndiaServer006 Working on IndiaServer005 Working on IndiaServer003 Working on IndiaServer002 Working on IndiaServer001
热门推荐
10 新人红包祝福语简短精辟
11 幼师给毕业祝福语简短
12 生日高考祝福语妹妹简短
13 下飞机祝福语简短英文
14 元宵发客户祝福语简短
15 爸妈金婚文案祝福语简短
16 新郎朋友红包祝福语简短
17 虎年五一祝福语大全简短
18 出阁宴祝福语姐姐简短