5

Я заметил, что когда я запускаю следующую команду

Pushd \\RemoteMachine\C$ && java.exe -version

Я получаю версию Java компьютера, на котором я работаю. Однако когда я запускаю команду pushd с опцией поиска, подобной приведенной ниже, я получаю фактическую информацию, найденную на этом компьютере.

Pushd \\RemoteMachine\C$ && dir /s java.exe

Почему это так? Можно ли запустить java.exe -version на удаленном ПК и вывести информацию о компьютерах на мой экран?

3 ответа3

2

PsExec от SysInternals делает именно то, что вам нужно. Ваш пример будет:

psexec \\RemoteMachine java.exe -version
1

Хотя 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
0

Когда вы запускаете java.exe в вашем примере, оболочка ищет только текущий каталог (т.е. \\RemoteMachine\C$), но не его подкаталоги. (Другими словами, это больше похоже на dir java.exe без /s .)

Поскольку такого файла нет в C:\ удаленного компьютера, следующим шагом будет поиск каталогов, указанных в переменной среды %PATH% (которая обычно содержит только локальные каталоги).

Чтобы решить вашу проблему, укажите полный путь к java.exe . Вам даже не нужно использовать pushd:

C:\> "\\RemoteMachine\C$\Program Files\Java\jre6\bin\java.exe" -version

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .