PowerShell脚本无法从批处理文件中执行

3

我一直在尝试从批处理文件中启动一个简单的PowerShell脚本。在查看了网上的建议后,我需要使用Set-ExecutionPolicy来设置策略。

我已经这样做了,并且使用Get-ExecutionPolicy检查策略已经更改。

然而,运行此批处理文件会导致出现“打开方式”对话框,而不是执行脚本。

批处理文件:

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe ^&'./script.psl'

Powershell:

Write-Host "This is a message"

我在Windows 7和Server 2008 R2上都进行了取样。结果相同。我错过了什么?
2个回答

1

要从命令行运行脚本文件,请使用powershell.exe的-file参数。

 %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe  -file './script.psl'

1
我在这样做时遇到了一个错误消息:处理 - 文件''./script.psl''失败,因为该文件没有'.ps1'扩展名。请指定一个有效的PowerShell脚本文件名,然后重试。 - Tezza
无论如何,你不能用单引号引用文件名。至少在cmd中是不行的。PowerShell的解析规则仅适用于shell内部,而不适用于使用参数调用它时。 - Joey
1
@Tezza 如果你像 @Joey 指出的那样,在命令提示符中使用单引号引用脚本路径,或者指定一个扩展名不是 .ps1 的脚本,你将会得到 failed because the file does not have a '.ps1' extension 的错误。在这种情况下,两个条件都成立。请注意,在你的问题中并传递给这个答案的脚本扩展名是 .psl 而不是 .ps1(最后一个字符是小写的 L,而不是数字 1)。 - Lance U. Matthews

0

要从*.cmd文件运行脚本文件,请使用powershell.exe的-file参数和双引号:

 %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe  -file "./script.ps1"

当你在批处理文件中只使用一个引号时,可能会遇到 PowerShell 错误,例如:

处理“'./build.ps1'”失败,因为该文件没有 '.ps1' 扩展名。请指定一个有效的 Windows PowerShell 脚本文件名,然后重试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接