gpt4 book ai didi

powershell - 修改现有的Powershell脚本以使用并行处理

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

我可以在将并行处理代码添加到此脚本中使用一些帮助。我想我只是还没有充分了解powershell才能理解我在哪里以及在什么地方添加了必要的代码....我试图弄清楚它,但灯泡还没有点亮... :-)

Start-Transcript C:\temp\agent.log -IncludeInvocationHeader
$computers = gc "C:\temp\list.txt"
$source = "\\pathtodfsrootstore"
$dest = "c$\windows\temp\test2533212"

foreach ($computer in $computers) {
foreach (if (Test-Connection -Cn $computer -count 1 -quiet) {
Copy-Item -Force $source -Destination \\$computer\$dest -Recurse
#psexec.exe \\$computer cmd /c "c:\windows\temp\testv2533212\test.bat"
} else {
Write-output "$computer is not online"
}
}
Stop-Transcript

最佳答案

我认为您可以执行以下操作:

Start-Transcript C:\temp\agent.log -IncludeInvocationHeader

$Computers = Get-Content "C:\temp\list.txt"
$Source = "\\pathtodfsrootstore"
$Dest = "c$\windows\temp\test2533212"

$TestComputers = Test-Connection -Count 1 -AsJob $Computers
$TestResults = $TestComputers | Wait-Job | Receive-Job

$AliveComputers = ($TestResults | Where {$_.StatusCode -eq 0}).Address

Invoke-Command -ComputerName $AliveComputers -ScriptBlock {
Copy-Item -Force $source -Destination c:\windows\temp\test2533212 -Recurse
& "c:\windows\temp\testv2533212\test.bat"
}

Stop-Transcript

这是一种分两步的方法,其中我们使用Test-Connection的 -AsJob开关对所有计算机进行并行测试,以找出哪些计算机还处于 Activity 状态,然后使用此结果并行执行其他工作。

作业中的路径已更改,因为它们将在远程计算机上运行,​​因此可以引用本地路径。

我尚未对此进行测试,因此可能需要进行一些调整。您也可以只在开始时忽略 Test-Connection部分,只允许作业在无法访问计算机的地方失败。

使用以上解决方案,如果您想知道哪些机器不可达,可以执行以下操作:
$DeadComputers = ($TestResults | Where {$_.StatusCode -ne 0}).Address

关于powershell - 修改现有的Powershell脚本以使用并行处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44763020/

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