Назад | Перейти на главную страницу

psExec не имеет пути

У меня есть совершенно новый сервер Windows 2008 (64-разрядный), и сценарии удаленного развертывания с использованием nant и psExec не работают так, как на старых серверах.

Это работает: psExec \\newserver.myco.com cmd
Это успешно запускает Nant: psexec \\newserver.myco.com "C:\Program Files (x86)\Nant\Nant.exe"
Хорошо, он не делает ничего значимого с nant, но показывает, что nant.exe действительно запускается.
Но это не запускается:
psexec \\newserver.myco.com Nant или
psexec \\newserver.myco.com Nant.exe или
psexec \\newserver.myco.com "Nant.exe"

Я получил:

PsExec could not start Nant.exe on newserver.myco.com :  
The system cannot find the file specified.

это отлично работает на других серверах, на которых работает Server 2003, также 64-битный.

Я могу проверить, что Nant находится на пути к newServer:

C:\>path  
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;"C:\Program Files (x86)\nant" 

И если я наберу «nant» в командном окне на этой машине, я получу результат nant. Путь и нант присутствуют и верны, даже если я захожу через psexec cmd.

Что случилось с путём через psexec в 2008 году?

Глядя на Process Monitor, вы видите искаженный путь к файлу, поэтому переменная пути перепуталась. Удалите двойные кавычки из "C: \ Program Files (x86) \ nant", если вы посмотрите на один результат, который показывает, что кавычки встраиваются непосредственно в путь к файлу.

Вам не нужны двойные кавычки в переменной PATH, это точки с запятой, которые обозначают места, а не пробелы.

Я не знаю, нужно ли вам добавлять обратную косую черту в конце (C: \ Program Files (x86) \ nant \) или нет, попробуйте оба способа.

Я так люблю sysinternals

Спасибо, Мэтью.

Ни -i, ни указание рабочего каталога не работали. Помните, что исполняемый файл попадает на удаленную машину и устанавливает службу! Он просто не может найти путь.

Но пока я думаю об этом, psexec раньше нажимал на путь system32, а затем они изменили его, чтобы протолкнуть путь к Windows. Хммм ... может, не там ищет себя?

Боб

Может попробовать:

-i Запустить программу, чтобы она взаимодействовала с рабочим столом указанного сеанса удаленной системы. Если сеанс не указан, процесс выполняется в сеансе консоли.

-w Установить рабочий каталог процесса (относительно удаленного компьютера).

Дай мне знать, - Мэтью