2014-07-19 300 views
2

所以我有一个脚本,当我从PowerShell ISE运行它时工作正常。但是,我需要将其自动化,因此我运行了powershell.exe .\script.ps1,但是出现了一些未被识别的命令错误(它们来自非标准模块)。从命令行运行PowerShell ISE?

任何帮助表示赞赏,谢谢!

+0

什么是错误的,你能告诉我们的脚本你的相关部分运行。您的脚本中是否使用了非标准模块? – Matt

+0

不要“从命令行运行ISE”。修复您的脚本,使其无论在哪里运行,都能正常运行。 – alroc

回答

3

编辑脚本导入所有依赖关系(模块)的开始。这是很好的做法,因为它使代码更易读,并与两个PS 2.0起作用的3.0+

script.ps1

#Import example module 
Import-Module ActiveDirectory 

#Script start 
$name = Read-Host "Username" 
$user = Get-ADUser $name 
..... 
+0

这几乎做到了!由于它不是标准模块,因此只使用模块的名称(例如'Import-Module ActiveDirectory')不起作用。首先,我使用'Get-Module-ListAvailable'来查找模块的路径,然后使用'Import-Module C:\ path \ ActiveDirectory'并且它工作。 –

+0

:)只要模块已安装在模块位置中,'Import-Module ModuleName'应该可以工作。你也可以使用'Get-Module -Listavailable ActiveD * |进口Module' –

2

一个原因应该是脚本是点源或从您的配置文件脚本加载模块。在这种情况下,您的问题可能来自于以下事实:从命令行启动PowerShell并启动PowerShell ISE不会系统地使用相同的配置文件脚本。查看每个变量中的$Profile并编辑关联的文件。

$Profile我ISE:

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

$Profile我的命令行:

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

更多配置文件。 About_Profile

一个知道所有的$Profile路径方式: enter image description here