powershell - 从 Powershell 运行批处理文件时出现“(。此时是意外的”
问题描述
我正在使用 Powershell 远程连接到服务器,然后运行批处理文件以在远程服务器上执行。我能够很好地连接到服务器并启动批处理文件。但是当我通过 Powershell 执行批处理文件时,我不断收到错误消息
“未指定:(。此时出乎意料。:字符串)[],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%
)
解决方案
看看你是如何使用 if/else 语句的。您对它们有错误的语法。您需要括号 {} 将 if else 的执行位括起来,而不是您拥有的括号 ()
batch 不是 powershell 它们是不同的语言并且具有不同的语法。如果您在 powershell 中运行批处理代码,它将尝试将其解释为 powershell。
如果您需要从 powershell 运行批处理文件,请执行
启动进程 C:\path\to\file.bat
推荐阅读
- python - 写入 excel 文件时超过 url 的数量
- c# - 带有 ItemTemplate 的 WPF 可搜索组合框
- python - Flask-Sqlalchemy 动态绑定
- c# - 无法通过 IntegrationServices 连接到服务器
- r - R 3.6 中的 mutate_at() 问题
- javascript - CSS - 设置所有子元素的总宽度等于它们的父元素
- jquery - jQCloud 在 Bootstrap Modal 中没有正确显示(没有角度,只有 jquery)
- python - 从 docx 文件中读取特殊字符时出错。我需要一盒表格
- android - Android SMS Api 不接受某些符号
- database-design - 它是设计no-sql数据库的好方法吗?