从批处理文件调用PowerShell脚本

时间:2014-08-20 23:35:42

标签: powershell batch-file

我尝试从批处理文件运行PowerShell脚本,并在我的计算机上成功运行。但是,当我把它放在服务器上时,它会抛出这个错误:

  

"在一元运算符' - '之后缺少表达式。
  在行:1 char:2
  + -E<<<< xecutionPolicy remotesigned -file' E:\ Misdemeanor
Queue \ Concatenate.ps1'

我尝试了不同的执行政策组合,但似乎没有任何效果。我必须在Windows Server 2003,SP2上运行它,它使用PowerShell的v1.0(这是我写的)。文件夹名称中有一个空格,用于存放批处理文件& ps1文件。以下是调用名为Concatenate.ps1的ps1文件的批处理文件:

 - @echo off &setlocal
del "E:\Misdemeanor Queue\Index3.txt"
set "search=.tif"
set "replace=|"
set "textfile=index2.txt"
set "newfile=Index3.txt"

(for /f "delims=" %%i in ('findstr "^" "%textfile%"') do (
    set "line=%%i"
    setlocal enabledelayedexpansion
    set "line=!line:%search%=%replace%!"
    echo(!line!
    endlocal
))>"%newfile%"
type "%newfile%"


PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& 'E:\Misdemeanor Queue\Concatenate.ps1'"

这是concatenate.ps1文件:

  

$ File1 = Get-Content" E:\ Misdemeanor Queue \ Index3.txt" $ File2 =   Get-Content" E:\ Misdemeanor Queue \ index1.txt" $ File3 = @()   For($ a = 0; $ a -lt $ File1.count; $ a ++){   $ File3 + = $ File1 [$ a] .trim()+ $ File2 [$ a] .trim()} $ File3 |出文件   " E:\ Misdemeanor Queue \ indexFINAL.txt"


它应该调用这个ps文件,连接Index3文件和Index1文件,并创建一个名为indexFINAL的txt文件。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

这是您在不支持-ExecutionPolicy参数的PowerShell 1.0上会遇到的错误。所以我怀疑你的服务器安装了1.0版本。如果PowerShell提示符的版权日期为2006,则版本为1.0。您是否可以将服务器升级到至少v2以获得对该参数的支持?