У меня есть совершенно новый сервер 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 Установить рабочий каталог процесса (относительно удаленного компьютера).
Дай мне знать, - Мэтью