试图在我们的环境中的服务器列表上运行病毒扫描。 有数百台机器,所以我们希望一次运行10次扫描(使用我们已有的命令行提示符)。 我们完全是PowerShell的新手,所以任何帮助将非常感激。 我们对我们需要使用哪些命令有一个大致的了解 – 以下是我们现在认为它可能工作的方式:
$server = Get-Content "serverlist.txt" $server | % { $VirusScan = { Scan32.exe } Invoke-Command -ScriptBlock { $VirusScan } -computerName $server -ThrottleLimit 10 -Authentication domain/admin }
任何人有什么build议,我们可以如何编排这个?
要直接回答您的问题(没有McAfee及其pipe理工具的知识,因此了解可能有更好的方法来处理您的情况),请阅读Invoke-Command帮助手册的以下部分:
-AsJob
在远程计算机上将该命令作为后台作业运行。 使用此参数来运行花费大量时间完成的命令。
当您使用AsJob时,该命令将返回一个表示作业的对象,然后显示命令提示符。 工作完成后,您可以继续工作。 要pipe理作业,请使用作业cmdlet。 要获取作业结果,请使用Receive-Job cmdlet。
将-AsJob追加到您的Invoke-Command命令,并为每个远程主机创build一个作业。 一旦创build作业,它将移动到下一个,而无需等待扫描完成。 这应该删除需要使用-ThrottleLimit也。
参考文献:
Get-Help Invoke-Command -Detailed (TechNet) Get-Help about_Jobs (TechNet) 您正尝试在这里使用错误的工具。 McAfee ePolicy Orchestrator(ePO)可以安排扫描,收集结果,强制进行按需扫描以及执行其他各种有用的function,例如保存更新存储库的副本。