2015-07-31 4 views
1

Проблема: Когда я использую скрипт для запуска другого скрипта удаленно, который полагается на модуль, модуль не импортируется.Импорт-модуль PowerShell через удаленное подключение


У меня есть 3 сценария, которые взаимодействуют друг с другом. A Controller скрипт, Body сценарий и Functions модуль.

Controller обрабатывает аутентификацию на удаленном компьютере и выполняет сценарий body на удаленном компьютере с использованием Invoke-Command.

body опирается на модуль functions.


Если я запускаю `body` сценарий непосредственно на удаленном компьютере, импортирует модуль правильно и скрипт завершает; однако, если я использую скрипт `controller` для запуска сценария` body` удаленно, модуль никогда не импортируется. Если я устанавливаю функции из модуля в сценарии body (это выглядит беспорядочно) и запускается удаленно, сценарий заканчивается, поэтому я знаю, что это проблема с импортом модуля. Я также попытался импортировать модуль в скрипт `controller`. Он импортирует правильно, но когда выполняется скрипт `body`, он все еще не может найти функции в модуле. (Я предполагаю, что он импортирует в локальную оболочку Powershell ... Я попытался запустить модуль импорта с тегом `-verbose`, чтобы увидеть, импортирован ли он, и он работает во всех случаях, кроме случаев, когда` controller` является используется для запуска `body` удаленно.

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

+0

Вы пытались войти в ISE и отладить его, если вы выполните шаг и проверьте каждый сервер, если функции есть. – Luke

+0

@ Luke у меня есть. Я понял, что проблема заключается в том, что команда import-module запускается на сервере, а указанный путь ссылается на путь на главной машине. Таким образом, сценарий не может найти модуль по указанному пути на сервере, потому что его там нет. На этом этапе я пытаюсь найти лучший способ включить модуль. – Speerian

+0

, не видя своего сценария, я думаю, что вы сможете запустить 'PSsession' на удаленном компьютере и запустить его оттуда. – Luke

ответ

0

Почему бы не импортировать модуль, используя сетевой путь в вашем коде? Если вы знаете, где находится модуль, вы можете указать путь к нему, даже если он находится на удаленном компьютере