Кажется, что Powershell как проблема с запланированным заданием при импорте модуля - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь настроить некоторые сценарии powershell / view powercli для нашей среды VMware horizon.У меня есть сценарий powershell, который работает правильно для запроса экземпляра горизонта и проверки состояния машины.Однако, когда я пытаюсь выполнить это как запланированную задачу с использованием учетной записи службы, кажется, что не удается импортировать модуль, поскольку команда не распознается («Термин« Connect-HVServer »не распознается как имя командлета,функция, файл сценария или работающая программа. ")

Я также пробовал профили, не имеет значения.

Я заметил, что если я открою powershell как рассматриваемый пользователь (запуститькак другой пользователь> аутентифицируется как учетная запись службы), если оставить этот экземпляр PowerShell открытым, запланированная задача будет выполняться должным образом.Однако, если я закрою экземпляр powershell, запланированное задание не будет выполнено.Это, очевидно, нежизнеспособно, поскольку цель состоит в том, чтобы этот сценарий выполнялся по расписанию без регистрации учетной записи службы (или любой учетной записи) на сервере Windows во время запуска сценария powershell.

1 Ответ

0 голосов
/ 17 мая 2018

Проблема, с которой вы сталкиваетесь, - это переменные окружения.В процессе работы в качестве пользователя по сравнению с работой в качестве компьютера переменная среды PSModulePath изменяется и включает пользовательские каталоги для установок модуля в пользовательской области.Вы должны установить PowerCLI для всей машины.

Альтернативы (они предполагают, что ваша служебная учетная запись имеет права администратора):

  • Измените $Env:PSModulePath в сценарии, чтобы включить модуль каждого пользователяпуть
  • Укажите путь в операторе Import-Module в вашем сценарии перед использованием любого из командлетов

Пример первой альтернативы:

foreach ($user in (Get-ChildItem -Path C:\Users)) {
    $Env:PSModulePath += ";$($user.FullName)\Documents\WindowsPowerShell\Modules"
}

Пример второго:

Import-Module -Name 'C:\Users\KnownUser\Documents\WindowsPowerShell\Modules\PowerCLI'
...