从 Powershell ISE 和 Windows 资源管理器运行脚本的不同行为

Posted

技术标签:

【中文标题】从 Powershell ISE 和 Windows 资源管理器运行脚本的不同行为【英文标题】:Different behaviour running a script from Powershell ISE and Windows Explorer 【发布时间】:2020-12-19 00:55:48 【问题描述】:

当我从 Windows 资源管理器和 ISE 运行命令时,为什么我的命令表现不同?

我有一个来自 Test1.ps1 的简单命令(Test1 和 Test2 都在同一个文件夹中)

& ".\Test2.ps1"

当我从 Windows 资源管理器运行它时,会执行脚本 Test2.ps1。但是,当我在 ISE 中运行它时,它不起作用,并且出现以下错误:

& : Die Benennung ".\Test2.ps1" wurde nicht als Name eines Cmdlet、einer Funktion、einer Skriptdatei oder eines ausführbaren Programms erkannt。 Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang。 在 Zeile:1 Zeichen:3 +& ".\Test2.ps1"

CategoryInfo : ObjectNotFound: (.\Test2.ps1:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException

对不起德语:它基本上说:“.\Test2.ps1”没有作为 cmdlet、函数、脚本文件或已执行程序的名称找到。检查名称的输入或路径是否正确

【问题讨论】:

PowerShell ISE 是 no longer actively developed 和 there are reasons not to use it(底部),特别是无法运行 PowerShell [Core] 6+。提供跨平台最佳 PowerShell 开发体验的积极开发的编辑器是 Visual Studio Code,结合其 PowerShell extension。 【参考方案1】:

请检查脚本窗格中显示的工作目录。 ISE 通常从您的用户配置文件开始。 请先更改脚本的路径。

Set-Location -Path "C:\ScriptLocation\"

或者调用脚本时使用完整路径:

& "C:\ScriptLocation\Test2.ps1"

当您从资源管理器运行它时,PowerShell 会在同一个文件夹中启动,这就是它能够找到脚本的原因。

【讨论】:

以上是关于从 Powershell ISE 和 Windows 资源管理器运行脚本的不同行为的主要内容,如果未能解决你的问题,请参考以下文章

从 Powershell ISE 中的另一个 PS1 脚本调用 PowerShell 脚本 PS1

powershell 设置Powershell ISE fon和颜色

powershell PowerShell函数用于扩展ISE和文件的别名

Powershell ISE 崩溃时在哪里存储选项卡?

Windows PowerShell ISE 是什么和 PowerShell 有什么区别

powershell和powershell ise到底分别干啥用,powershell命令那么长怎么记