Запустить PowerShell ISE из командной строки?

Итак, у меня есть сценарий, который отлично работает, когда я запускаю его из PowerShell ISE. Однако мне нужно автоматизировать это, поэтому я запускаю powershell.exe .\script.ps1, но получаю ошибки о том, что некоторые команды не распознаются (они из нестандартного модуля).

Любая помощь приветствуется, спасибо!


person Calvin Li    schedule 19.07.2014    source источник
comment
В чем заключаются ошибки, и можете ли вы показать нам соответствующую часть выполняемого вами скрипта? Ваш нестандартный модуль взят из вашего скрипта?   -  person Matt    schedule 19.07.2014
comment
Не запускайте ISE из командной строки. Исправьте свой сценарий, чтобы он работал правильно независимо от того, где вы его запускаете.   -  person alroc    schedule 20.07.2014


Ответы (2)


Отредактируйте начало вашего скрипта, чтобы импортировать все зависимости (модули). Это хорошая практика, поскольку она делает код более читабельным и работает как с PS 2.0, так и с 3.0+.

script.ps1

#Import example module
Import-Module ActiveDirectory

#Script start
$name = Read-Host "Username"
$user = Get-ADUser $name
.....
person Frode F.    schedule 19.07.2014
comment
Это почти сработало! Поскольку это не был стандартный модуль, просто использовать имя модуля (например, Import-Module ActiveDirectory) не получится. Сначала я использовал Get-Module -ListAvailable, чтобы найти путь к модулю, затем использовал Import-Module C:\path\ActiveDirectory, и это сработало. - person Calvin Li; 21.07.2014
comment
:) Пока модули были установлены в месте расположения модулей, Import-Module ModuleName должен работать. Вы также можете сделать Get-Module -Listavailable ActiveD* | Import-Module - person Frode F.; 21.07.2014

Одна из причин должна заключаться в том, что сценарий получен через точечный источник или модуль загружен из сценария вашего профиля. В этом случае проблема может возникнуть из-за того, что запуск PowerShell из командной строки и запуск PowerShell ISE систематически не используют один и тот же сценарий профиля. Посмотрите на $Profile var в каждом из них и отредактируйте связанный файл.

$Profile на моем ISE:

C:\Users\JPB\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1

$Profile в моей командной строке:

C:\Users\JPB\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Подробнее о профилях. About_Profile

Способ узнать все ваши $Profile пути: введите описание изображения здесь

person JPBlanc    schedule 19.07.2014