gpt4 book ai didi

powershell - start-job 并行运行命令并在结果到达时输出结果

转载 作者:行者123 更新时间:2023-12-02 23:15:07 25 4
gpt4 key购买 nike

我试图在服务器列表中获取特定的 KBXXXXXX 存在,但是一旦我的脚本在一台服务器上运行,它就需要时间并返回结果,然后返回,然后移动到下一个服务器。这个脚本对我来说工作得很好。我希望我的脚本启动并 get-hotfix 作为作业和其他进程来收集结果并显示它们。

$servers = gc .\list.txt 
foreach ($server in $servers)
{
$isPatched = (Get-HotFix -ComputerName $server | where HotFixID -eq 'KBxxxxxxx') -ne $null
If ($isPatched)
{
write-host $server + "Exist">> .\patchlist.txt}
Else
{
Write-host $server +"Missing"
$server >> C:\output.txt
}

}

目标是使列表执行得更快而不是串行运行。

最佳答案

使用 Powershell V2,您可以使用 @Andy 回答中的作业,或者也可以在此链接中获得更多详细信息 Can Powershell Run Commands in Parallel?

对于 PowerShell V2,您可能还想查看此脚本 http://gallery.technet.microsoft.com/scriptcenter/Foreach-Parallel-Parallel-a8f3d22b使用运行空间

使用 PowerShell V3,您可以使用 foreach -parallel 选项。

例如(NB Measure-Command只是为了计时所以你可以做一个比较)

Workflow Test-My-WF {  
param([string[]]$servers)

foreach -parallel ($server in $servers) {

$isPatched = (Get-HotFix -ComputerName $server | where {$_.HotFixID -eq 'KB9s82018'}) -ne $null
If ($isPatched)
{
$server | Out-File -FilePath "c:\temp\_patchlist.txt" -Append
}
Else
{
$server | Out-File -FilePath "c:\temp\_output.txt" -Append
}
}
}

Measure-Command -Expression { Test-My-WF $servers }

关于powershell - start-job 并行运行命令并在结果到达时输出结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15671487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com