Я пытаюсь запустить проверку на вирусы на списке серверов в нашей среде. Существуют сотни машин, поэтому мы хотели бы запускать сканирование (с помощью командной строки, которая у нас уже есть) около 10 за раз. Мы совершенно не знакомы с PowerShell, поэтому мы будем благодарны за любую помощь. У нас есть общее представление о том, какие команды нам нужно использовать - вот как, по нашему мнению, сейчас это может работать:
$server = Get-Content "serverlist.txt"
$server | % {
$VirusScan = { Scan32.exe }
Invoke-Command -ScriptBlock { $VirusScan } -computerName $server -ThrottleLimit 10 -Authentication domain/admin
}
У кого-нибудь есть предложения о том, как мы можем это организовать?
Вы пытаетесь использовать здесь не тот инструмент. McAfee ePolicy Orchestrator (ePO) может планировать сканирование, собирать результаты, принудительно выполнять сканирование по требованию и выполнять всевозможные другие полезные действия, например сохранять копию репозитория обновлений.
Чтобы напрямую ответить на ваш вопрос (без знания McAfee и его инструментов управления и, следовательно, понимания того, что может быть лучший подход к вашей ситуации), прочтите следующий раздел Invoke-Command
справочное руководство:
-AsJob
Выполняет команду как фоновое задание на удаленном компьютере. Используйте этот параметр для запуска команд, выполнение которых требует много времени.
Когда вы используете AsJob, команда возвращает объект, представляющий задание, а затем отображает командную строку. Вы можете продолжить работу в сеансе, пока работа будет завершена. Для управления заданием используйте командлеты Job. Чтобы получить результаты работы, используйте Получение работы командлет.
Добавить -AsJob
на ваш Invoke-Command
команда и задание будет создано для каждого удаленного хоста. Как только задание будет создано, оно перейдет к следующему, не дожидаясь завершения сканирования. Это должно устранить необходимость использования -ThrottleLimit
также.
Ссылки:
Get-Help Invoke-Command -Detailed
(TechNet)Get-Help about_Jobs
(TechNet)