所以我有一个脚本,当我从PowerShell ISE运行它时工作正常。但是,我需要将其自动化,因此我运行了powershell.exe .\script.ps1
,但是出现了一些未被识别的命令错误(它们来自非标准模块)。从命令行运行PowerShell ISE?
任何帮助表示赞赏,谢谢!
所以我有一个脚本,当我从PowerShell ISE运行它时工作正常。但是,我需要将其自动化,因此我运行了powershell.exe .\script.ps1
,但是出现了一些未被识别的命令错误(它们来自非标准模块)。从命令行运行PowerShell ISE?
任何帮助表示赞赏,谢谢!
编辑脚本导入所有依赖关系(模块)的开始。这是很好的做法,因为它使代码更易读,并与两个PS 2.0起作用的3.0+
script.ps1
#Import example module
Import-Module ActiveDirectory
#Script start
$name = Read-Host "Username"
$user = Get-ADUser $name
.....
这几乎做到了!由于它不是标准模块,因此只使用模块的名称(例如'Import-Module ActiveDirectory')不起作用。首先,我使用'Get-Module-ListAvailable'来查找模块的路径,然后使用'Import-Module C:\ path \ ActiveDirectory'并且它工作。 –
:)只要模块已安装在模块位置中,'Import-Module ModuleName'应该可以工作。你也可以使用'Get-Module -Listavailable ActiveD * |进口Module' –
一个原因应该是脚本是点源或从您的配置文件脚本加载模块。在这种情况下,您的问题可能来自于以下事实:从命令行启动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
路径方式:
什么是错误的,你能告诉我们的脚本你的相关部分运行。您的脚本中是否使用了非标准模块? – Matt
不要“从命令行运行ISE”。修复您的脚本,使其无论在哪里运行,都能正常运行。 – alroc