Скрипт Powershell работает медленнее в пространстве выполнения, чем в оболочке - PullRequest
3 голосов
/ 10 июля 2009

У меня есть сценарий PS, который я использую для отслеживания своих серверов VMWare ESX. Мне нужно запустить его в качестве службы, чтобы я не входил в систему постоянно. К сожалению, сценарий выполняется медленнее, если я использую пространство выполнения внутри службы, а не просто запускаю сценарий через консоль powershell. Для того чтобы звонить в веб-службу VMWare, требуется 2-5 минут, а не секунда или около того.

Есть ли какая-то магия, которую я должен использовать при вызове пространства выполнения?

Ответы [ 4 ]

1 голос
/ 06 июля 2010

Не видя, что ты делаешь, я не могу вспомнить многих вещей, которые могли бы иметь такое большое значение:

  • Есть ли у вас настройка профиля, которая может помочь ему при запуске в PowerShell (тестирование с PowerShell -noprofile)
  • Считаете ли вы время, необходимое для первоначального импорта модуля или оснастки в вашем сервисе, но не в PowerShell.
  • Вы каждый раз заново создаете целое пространство выполнения в вашем сервисе?

Вы пытались использовать 2.0 API PowerShell с PowerShell.Create () для его запуска?

Наконец, вы также можете взглянуть на некоторые хосты PowerShell с открытым исходным кодом, такие как PoshConsole или bgHost в CodePlex ... если они не запускаются медленно, вы можете следить за процессом, который они используют для создания своего пространства выполнения.

1 голос
/ 11 июля 2009

Вы можете запустить скрипт как запланированное задание.

0 голосов
/ 06 июля 2010

Рассматриваемый скрипт работает одинаково медленно, независимо от того, выполняется ли он в службе обычная служебная учетная запись, или если я запускаю себя в самом базовом консольном приложении (создайте runspace, добавить скрипт, выполнить).

Помимо обычных подозреваемых (права учетной записи, Set-ExecutionPolicy RemoteSigned и конфигурация брандмауэра), я не могу придумать вескую причину, почему PowerShell не должен работать точно так же в службах Windows, как в консольном приложении. , что заставляет меня думать, что это может быть что-то экологическое. Это не что-то глупое, как плохое разрешение DNS, не так ли? Предполагая, что вы запускаете это на сервере, он также работает медленно на вашей машине разработки?

PS: Интересно, может быть этот вопрос больше подходит для ServerFault?

0 голосов
/ 11 июля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...