Вопрос или проблема
PsExec (v2.11) может занять до минуты для запуска процесса, как локально, так и удаленно.
Я использую следующую командную строку:
psexec.exe -u домен\имя_пользователя -p мой_пароль -accepteula -d -h \\имя_машины C:\путь\к\моему_приложению.exe
Я отключил брандмауэр на всех машинах.
На что еще я могу обратить внимание?
ОБНОВЛЕНИЕ: Я использовал procmon для выделения задержки:
Команда косвенно открывает пользовательскую сессию под указанным именем пользователя для выполнения процесса, поэтому это будет долго, вы ничего не можете сделать с этой проблемой.
Единственный совет, чтобы сделать это немного быстрее:
-
Вы можете попробовать с -s, чтобы выполнить процесс как ЛОКАЛЬНУЮ СИСТЕМУ.
-
Попробуйте с -e, чтобы не загружать профиль пользователя.
На серверах Windows (2008-2019) есть 3 правила по умолчанию, которые необходимо включить:
- Перейдите в:
брандмауэр Windows с расширенной безопасностью
- Перейдите в:
Входящие правила
- Щелкните правой кнопкой мыши на
Входящие правила
Фильтр по группе ->Фильтр по удаленному управлению службой
- Включите эти 3 правила для домена (если вы установили ваше соединение как домен)
Удаленное управление службой (NP-In)
Удаленное управление службой (RPC)
Удаленное управление службой (RPC-EPMAP)
PsExec v2.34
С.
Ответ или решение
Проблема медленного запуска процессов с помощью PsExec
Проблема, с которой вы столкнулись, заключается в том, что PsExec (v2.11) может занимать до одной минуты для запуска процесса как локально, так и удаленно. Давайте разберем возможные причины этого явления и предложим решения, которые могут помочь вам оптимизировать время запуска.
1. Анализ конфигурации команды
Вы используете следующую команду:
psexec.exe -u domain\username -p mypassword -accepteula -d -h \\machinename C:\path\to\myapp.exe
Согласно вашему описанию, команда запускается со следующими параметрами:
-u
и-p
— указывают учетные данные для доступа.-accepteula
— согласие с лицензионным соглашением.-d
— фоновые процессы должны запускаться не дожидаясь завершения.-h
— выполняет процесс с повышенными правами.
2. Время задержки и его возможные причины
Задержка при запуске процесса может происходить по нескольким причинам:
-
Аутентификация: Время, затрачиваемое на проверку учетных данных, может варьироваться в зависимости от настроек сетевой безопасности и доступности контроллера домена. Если контроллер домена недоступен или создает задержки, это скажется на времени запуска.
-
Загрузка профиля пользователя: Запуск процесса от имени пользователя может требовать загрузки профиля, что также увеличивает время ожидания. Профили пользователей могут быть довольно объемными и занимать время при загрузке.
-
Брандмауэр Windows: Хотя вы указали, что брандмауэр отключен, всегда стоит проверять, правильно ли настроены правила для удаленного управления. Убедитесь, что разрешены следующие три правила:
- Remote Service Management (NP-In)
- Remote Service Management (RPC)
- Remote Service Management (RPC-EPMAP)
3. Рекомендации по улучшению производительности
Чтобы уменьшить время запуска процессов с помощью PsExec, рекомендуется рассмотреть следующие варианты:
-
Запуск как локальная система: Попробуйте использовать параметр
-s
, чтобы выполнять процесс от имени учетной записи Local System. Это может ускорить запуск, так как система не будет проверять учетные данные.psexec.exe -s -d -h \\machinename C:\path\to\myapp.exe
-
Избежание загрузки профиля: Попробуйте использовать параметр
-e
, чтобы избежать загрузки профиля пользователя, что также может сократить время выполнения. -
Оптимизация сети и компьютеров: Убедитесь, что сетевое соединение между вашими машинами стабильное и имеет хорошую скорость, а компьютеры не имеют проблем с производительностью или внутренними ресурсами.
4. Использование инструментов диагностики
Вы упомянули использование ProcMon для анализа задержек. Это отличный инструмент, который может помочь вам узнать, на каком этапе происходит задержка. Вы можете проследить, какие процессы и вызовы системы занимают много времени, что поможет более детально понимать проблему.
Заключение
Проблема длительного запуска процессов с использованием PsExec может быть вызвана рядом факторов, начиная от аутентификации и загрузки профилей пользователей и заканчивая настройками сетевой безопасности. Следуя указанным рекомендациям, вы можете значительно сократить время запуска ваших процессов. Если проблема сохраняется, стоит обратить внимание на дополнительную диагностику сети и системы.
Если у вас возникли дополнительные вопросы или необходимо более глубокое исследование проблемы, не стесняйтесь обращаться за помощью к специалистам в области IT.