Powershell脚本未从批处理文件启动
我一直在尝试从批处理文件启动一个简单的powershell脚本。联机查看后,建议使用set ExecutionPolicy设置策略 我已经这样做了,并且使用Get ExecutionPolicy更改了策略 但是,运行此批处理文件会导致“打开方式”对话框,而不是执行脚本 批次: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
%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
)。