Самый быстрый способ включить PSRemoting после перезагрузки?Длинная задержка с методом WMI - PullRequest
0 голосов
/ 21 февраля 2019

В нашей среде мне часто приходится перезагружать компьютер, а затем отправлять ему команды через Invoke-Command.Для этого мне, очевидно, нужно включить PSRemoting на целевом компьютере.

Он включен по умолчанию на всех наших машинах, однако после перезагрузки требуется некоторое время, чтобы запустить саму себя.

Я использую Invoke-WmiMethod, чтобы принудительно включить его, как только компьютер пингует вместо ожидания.

Это работает хорошо, но иногда для запуска требуется более 30-40 секунд. Это все же быстрее, чем 2-5 минут это может занять, если я просто позволю ему начать сам.

Я использую команду:

Invoke-WmiMethod -ComputerName $poste -Path Win32_Process -Name create -ArgumentList "powershell.exe -command Enable-PSRemoting -SkipNetworkProfileCheck -Force"

Мои вопросы:

  1. Почему после того, как эта команда действительно активируется, проходит так много времени?
  2. Есть ли лучший способ предложить PSRemoting через WMI или что-то еще?

1 Ответ

0 голосов
/ 21 февраля 2019

tldr;

Все, что вы действительно делаете при запуске Enable-PSRemoting, запускает службу WinRM, все остальное, что делает команда, пропускается, поскольку вы уже настроили ее.

Служба WinRM установлена ​​на Automatic Delayed Start - чтобы ускорить ее запуск, измените ее на Automatic.


«Задержка», на которую вы ссылаетесь - это задержка в Windows при запуске WinRM service.

Службы, которые запускаются при загрузке, имеют две опции:

  • Automatic запустит службу как можно скорее после того, как сама Windows загрузит
  • Automatic Delayed Startзапуск службы после небольшой задержки

Причиной этих двух типов является конфликт ресурсов - при каждом запуске службы одновременно будет использоваться огромное количество ресурсов, и конечный пользователь заметит это какзамедление.

Для эффективного управления ресурсами Службы, необходимые для Windows, будут установлены на Automatic и будут запускаться одновременно.Это потребляет много системных ресурсов, но у пользователя нет выбора, поскольку эти службы обычно необходимы для правильной работы Windows.

Но для служб, которые не являются необходимыми, Delayed Start - лучший вариант.Они запускаются «вскоре после загрузки», когда все службы Automatic запущены.Обычно это сервис для вторичной функциональности - например, служба обновления.

Служба WinRM установлена ​​на Automatic Delayed Start - чтобы ускорить ее запуск, измените ее на Automatic.Это приведет к снижению производительности, поэтому протестируйте его перед массовыми изменениями.


IMO - не меняйте запуск службы, используйте код для устранения этой задержки ...

Например, Restart-Computer с параметром Wait перезагрузит удаленный компьютер и будет ожидать подключения, прежде чем продолжить:

Restart-Computer -ComputerName "Server01" -Wait -For PowerShell -Timeout 300 -Delay 2
...