"ERROR: Invalid syntax. Default option is not allowed more than '2' time(s)." using SETX

"ERROR: Invalid syntax. Default option is not allowed more than '2' time(s)." using SETX

我以为我曾经有过这个工作,但最近我的命令停止工作了。我在国内外的研究没有发现任何我没有尝试过的东西。也许我还缺少 SETX 正在查看的其他一些变量?

我的命令:

setx /s servername PATH "%Path%";"c:\program files (x86)\java\jre7\bin";"c:\program files (x86)\java\jre7\bin\client" /m

我已经对几个 Win2k8 服务器尝试了相同的命令,但没有成功。这已经奏效,但现在产生了上述错误。我通常 运行 在一个批处理文件中针对多个服务器的列表将其推出 Java 。 (除非我们在远程安装时手动创建条目,否则不会设置 java 的路径。)

我正在尝试更新的服务器上现有的 path 是这样的:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%systemroot%\System32\WindowsPowerShell\v1.0\;C:\BMC\Patrol3\bin;C:\BMC\common\globalc\bin\Windows-x86;C:\BMC\common\globalc\bin\Windows-x86-64;C:\BMC\Patrol3\BEST1.5.00\bgs\bin

我确实清理了几个重复的路径条目。除此之外,我没有发现任何异常。


编辑: 调整命令以删除一些引号确实允许它 运行 但是这样,它会导入本地系统的路径替换远程系统路径并附加所需的路径条目。

修改后的命令:

setx /s servername PATH "%Path%;c:\program files (x86)\java\jre7\bin;c:\program files (x86)\java\jre7\bin\client" /m

为了解决这个新问题,我正在尝试 运行 使用 psexec 命令。这样做让我回到原来的问题 "Default option is not allowed more than '2' time(s)"。根据我在使用 psexec 时修改引号的方式,我可以获得 "To many Arguments" 或命令成功,路径 t运行cated 最终成为再次应用于远程服务器的本地路径。

我最有希望的尝试:

psexec \servername -u domain\user -p p@ssw0rd "c:\windows\system32\setx" "Path "%Path%;c:\program files (x86)\java\jre7\bin;c:\program files (x86)\java\jre7\bin\client" /M"

在 psexec 上使用“-s”选项会产生相同的错误,只是细节较少。

我能够通过创建要远程执行的批处理文件来更新远程系统上的路径值。

"setJava7path.cmd"

的内容
setx Path "%Path%";"%ProgramFiles(x86)%\java\jre7\bin";"%ProgramFiles(x86)%\java\jre7\bin\client" /m

为了执行,我使用了 psexec,它将批处理文件复制到远程系统并执行命令。

psexec \systemname -c setJava7path.cmd

它在我的整体部署脚本中添加/更改了一行,但这是可行的。