我正在尝试对环境中的一系列服务器运行病毒扫描。有数百台机器,因此我们希望一次对大约 10 台机器运行扫描(使用我们已经拥有的命令行提示符)。我们对 PowerShell 完全陌生,因此任何帮助都将不胜感激。我们对需要使用哪些命令有一个大致的了解——以下是我们认为目前可能的工作方式:
$server = Get-Content "serverlist.txt"
$server | % {
$VirusScan = { Scan32.exe }
Invoke-Command -ScriptBlock { $VirusScan } -computerName $server -ThrottleLimit 10 -Authentication domain/admin
}
有人对我们如何安排这件事有什么建议吗?
答案1
为了直接回答您的问题(不了解 McAfee 及其管理工具,因此不了解可能有更好的方法来解决您的情况),请阅读帮助Invoke-Command
手册的以下部分:
-AsJob
在远程计算机上以后台作业的形式运行该命令。使用此参数可运行需要大量时间才能完成的命令。
使用 AsJob 时,该命令将返回一个代表作业的对象,然后显示命令提示符。作业完成时,您可以继续在会话中工作。要管理作业,请使用 Job cmdlet。要获取作业结果,请使用接收工作执行以下命令:
附加-AsJob
到您的Invoke-Command
命令后,将为每个远程主机创建一个作业。一旦创建了作业,它将转到下一个作业,而无需等待扫描完成。这应该消除了使用-ThrottleLimit
also 的需要。
参考:
Get-Help Invoke-Command -Detailed
(TechNet)Get-Help about_Jobs
(TechNet)
答案2
您尝试使用的工具不对。McAfee ePolicy Orchestrator (ePO) 可以安排扫描、收集结果、强制按需扫描,以及执行各种其他有用的操作,例如保存更新存储库的副本。