Powershell脚本未从批处理文件启动

Powershell脚本未从批处理文件启动,powershell,batch-file,powershell-2.0,Powershell,Batch File,Powershell 2.0,我一直在尝试从批处理文件启动一个简单的powershell脚本。联机查看后,建议使用set ExecutionPolicy设置策略 我已经这样做了,并且使用Get ExecutionPolicy更改了策略 但是,运行此批处理文件会导致“打开方式”对话框,而不是执行脚本 批次: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe ^&'./script.psl' Powershell: Write-Host "This

我一直在尝试从批处理文件启动一个简单的powershell脚本。联机查看后,建议使用set ExecutionPolicy设置策略

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

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

批次:

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

Write-Host "This is a message"

我已经在Windows7和Server2008R2上进行了采样。两者都有相同的结果。我缺少什么?

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

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

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

 %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe  -file "./script.ps1"
当您在批处理文件中仅使用一个报价时,可能会出现如下powershell错误:

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


执行此操作时,我收到一条错误消息:处理-文件“”。/script.psl“”失败,因为该文件没有扩展名“.ps1”。请指定有效的PowerShell脚本文件名,然后重试。在任何情况下,都不能用单引号引用文件名。至少不是来自
cmd
。PowerShell的解析规则在shell中适用,但在使用参数调用它时不适用。@Tezza如果像@Joey指出的那样,您在命令提示符中单引号引用脚本路径,或者指定一个扩展名不是
.ps1
的脚本,您将得到
失败的文件,因为该文件没有.ps1扩展名。在这种情况下,这两个条件都为真。请注意,在您的问题中,脚本扩展名是
.psl
,而不是
.ps1
(最后一个字符是小写的
L
,而不是数字
1
)。