@NortheR73
системный инженер

Kак сделать многопоточный PS-скрипт?

Коллеги!
толкните, плз, в нужном направлении...
Задача такая: на доменных компах надо добавить новую локальную УЗ и засунуть ее в локальные админы - все это сделать скриптом...в плане ОС в домене - сборная солянка от Windows 7/WS2008R2 до Windows 10/WS2019
в общем, скрипт я написал, он обходит компы и добавляет нового локального юзера и т.д., но делает это медленно
хотел бы ускорить работу скрипта, сделав его многопоточным - но не умею

P.S. про гугл, GPO и прочие ништяки знаю и использую...как не надо делать - тоже знаю :) но тут заказчик немного странный
  • Вопрос задан
  • 271 просмотр
Решения вопроса 1
@MaxKozlov Куратор тега PowerShell
Самое простое - Start-Job, оно есть везде, начиная с 3.0
но оно памяти жрёт и использует процессы, а не потоки. по быстрому, на десяток-другой компов - сойдёт.

Многопоточное:
  • PoshRSJob (причём лучше мой форк ;)
  • ThreadJob
  • Invoke-Parallel


Всё это (модули/скрипты) требует установки на админский комп для запуска задач в стиле
$computers | Start-RSJob { Invoke-MyCommand -Computer $_ }

Потом можно посмотреть результаты работы
Get-RSJob | Receive-RSJob

а уже внутри Invoke-MyCommand будет выполняться что-то, что лезет удалённо и делает там свои дела
Но вот это Invoke-MyCommand - если это внешняя функция, а не просто набор действий, требует дополнительного "проталкивания" в поток. Примеры есть

Другие модули работают аналогично, со своими нюансами, естественно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы