一元运算符“-”后缺少表达式

missing expression after unary operator '-'

我在 PowerShell v5.0 中编写了一个 PowerShell 脚本,我可以从批处理文件中毫无问题地执行该脚本。但是,当我在 Windows 2008 中使用 PowerShell v1.0 执行批处理文件时,出现错误 'missing expression after unary operator '-'.

谁能告诉我是什么导致了这个错误?

这是我的批处理文件中的代码

@ECHO OFF
SET ThisScriptsDirectory=%~dp0
SET PowerShellScriptPath=%ThisScriptsDirectory%SAP_Shell_Script.ps1
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '%PowerShellScriptPath%'";

这不能保证能解决您的问题,但可能会引导您找到解决方案:

首先 - 如果可能 - 值得考虑更新非常过时的 v1.0 PowerShell 安装(Windows Server 2008 附带)。

因为您已经排除了问题不是脚本的 内容,这意味着 PowerShell 的 CLI 语法 必须在以后的版本中更改:

  • 听起来您使用的参数名称至少有一个未被 v1 中的 powershell.exe 识别,导致它和所有后续参数被解释为 作为 PowerShell 命令(它是 - 前缀 - 然后被解释为 运算符 - 导致错误消息)。

故障处理如下:

  • powershell.exe -?开头,以显示您的版本支持哪些参数。

  • 从一个最小的命令开始,然后尝试一个一个地添加参数。

    • 以下最小命令假定您已使用 Set-ExecutionPolicy 至少允许 当前会话 (进程)执行脚本;在以后的 PowerShell 版本中,您将按以下方式执行 - 我不知道它是否适用于 v1.0:

      Set-ExecutionPolicy -Force -Scope Process -ExecutionPolicy Bypass
      

最小命令:

PowerShell "& '%PowerShellScriptPath%'"

请注意,与您的原始命令(在 v5 中有效)一样,假设变量 %PowerShellScriptPath% 的值本身不包含 ' 个字符。