我注意到当我运行以下命令时
Pushd \\RemoteMachine\C$ && java.exe -version
我获取了所用计算机的 Java 版本。但是,当我使用以下命令之类的搜索选项运行 pushd 命令时,我获取了在该计算机上找到的实际信息。
Pushd \\RemoteMachine\C$ && dir /s java.exe
为什么会这样?是否可以在远程 PC 上运行 java.exe -version 并让其在我的屏幕上输出该计算机的信息?
答案1
当您在示例中运行时java.exe
,shell 仅搜索当前目录(即\\RemoteMachine\C$
),但是不是其子目录。(换句话说,它更像是dir java.exe
没有 . 的/s
。)
由于远程计算机中没有这样的文件C:\
,下一步是搜索%PATH%
环境变量中指定的目录(通常只包含本地目录)。
要解决您的问题,请指定 的完整路径java.exe
。您甚至不需要使用pushd
:
C:\> "\\RemoteMachine\C$\Program Files\Java\jre6\bin\java.exe" -version
答案2
执行程序SysInternals 完全满足您的需求。示例如下:
psexec \\RemoteMachine java.exe -version
答案3
尽管 PsExec 可以完成这项工作,但我无法使用它。
一旦我使用,我就可以java.exe -version
通过更改目录在远程机器上执行命令pushd
。
Pushd \\RemoteComputer\C$
cd "Program Files\Java\jre6\bin"
Java.exe -version
或者同时
Pushd \\RemoteComputer\C$ && cd "Program Files\Java\jre6\bin" && java.exe -version && popd