我正在使用Powershell远程到服务器,然后运行批处理文件以在远程服务器上执行。我可以正常连接到服务器并启动批处理文件。但是,当我通过Powershell执行批处理文件时,总是出现
错误“ NotSpecified:(。此时是意外。:String)[],RemoteException”
但是,如果我从服务器本地执行该批处理文件,则该批处理文件可以正常运行。通过故障排除和日志记录,我认为问题与批处理文件中的If-else块有关。代码如下。为了通过Powershell起作用,是否需要修复语法?
假定%prop_arg%是作为命令行参数传递的值。其他变量是在批处理文件执行期间设置的,然后才能到达if else语句。谢谢您的帮助。
if [%prop_arg%] == [] (
@rem if nothing then use default value
echo Running Execution for '%USERID%' on %DATE% >> %CURRENT_DIR%\Logs\%LOG_FILE%
echo. >> %CURRENT_DIR%\Logs\%LOG_FILE%
echo GEM list: >> %CURRENT_DIR%\Logs\%LOG_FILE%
gem list >> %CURRENT_DIR%\Logs\%LOG_FILE%
ruby %CURRENT_DIR%\testscript.rb %CURRENT_DIR%\framework_properties.txt 2>&1 | tee -a %CURRENT_DIR%\Logs\%LOG_FILE%
) else (
echo Using properties file: %prop_arg%
ruby %CURRENT_DIR%\testscript.rb %CURRENT_DIR%\%prop_arg% 2>&1 | tee -a %CURRENT_DIR%\Logs\%LOG_FILE%
)
答案 0 :(得分:1)
看看您如何使用if / else语句。您使用的语法错误。您需要使用括号{}将if else的执行位而不是括号括起来 ()您有
batch不是powershell,它们是不同的语言,并且具有不同的语法。如果您在Powershell中运行批处理代码,它将尝试将其解释为Powershell。
如果您需要从powershell运行批处理文件,请执行
开始进程C:\ path \ to \ file.bat