我尝试从批处理文件运行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文件。
我该怎么办?
答案 0 :(得分:0)
这是您在不支持-ExecutionPolicy
参数的PowerShell 1.0上会遇到的错误。所以我怀疑你的服务器安装了1.0版本。如果PowerShell提示符的版权日期为2006,则版本为1.0。您是否可以将服务器升级到至少v2以获得对该参数的支持?