“(在此时出现意外”是从Powershell运行批处理文件时)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“(在此时出现意外”是从Powershell运行批处理文件时)相关的知识,希望对你有一定的参考价值。

我使用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%	estscript.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%	estscript.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

以上是关于“(在此时出现意外”是从Powershell运行批处理文件时)的主要内容,如果未能解决你的问题,请参考以下文章

从Visual Studio Code PowerShell运行Anaconda命令

powershell是病毒吗?

powershell 此PowerShell脚本是从SCCM DB获取SCEP日志并将其导出为CSV文件

pytorch实现批训练

使用 Powershell 递归重命名文件

添加第一个域用户的 PowerShell 脚本 [权限问题]