Время от времени мне нужно запускать команды на нескольких серверах Windows (синхронизировать файлы из репозитория исходного кода, содержащего файлы сценариев [и другие случайные вещи]). Время выполнения этой команды определяется задержкой в сети.
В настоящее время я использую командлет PowerShell Invoke-Command, но он запускает команду последовательно на каждом хосте. Поскольку запуск этого сценария занимает приятное время (иногда пару минут на сервер), я бы хотел ускорить процесс, выполнив команду параллельно на всех серверах одновременно.
Invoke-Command, насколько я мог понять, не может этого сделать. Psexec от SysInternals тоже не может этого сделать.
Я смутно осознаю, что PowerShell имеет средство параллельного цикла, которое может выполнять несколько итераций цикла одновременно в нескольких потоках. Но в документации говорится, что это доступно только в рабочем процессе PowerShell, с которым я не знаком, и это звучит так, как будто это слишком много.
В оболочке Unix-y я мог запускать каждый вызов psexec в фоновом режиме. Но, насколько мне известно, PowerShell не поддерживает это. Или я мог бы использовать инструмент, как GNU Parallels или TS.
Есть ли (простой) способ сделать это на компьютере с Windows 7?
Если ничего не помогает, я мог бы написать Perl-Script или что-то еще, но зачем изобретать велосипед? Конечно, я не первый человек, который столкнется с этой проблемой.