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

Удаленный запуск приложения из общей папки с помощью PsExec

На самом деле я не уверен, что это возможно. Посмотрим:

У меня есть сценарий, который работает на сервере сборки. Назовем этот сервер A.
Он помещает корзины в общую папку на сервере B. И я хочу запустить программу на сервере C.

Таким образом, используя caspol, я могу разрешить запуск исполняемого файла удаленно. это означает, что из B я могу запустить \ C \ shared \ my.exe

Я хочу сделать из A run \ C \ shared \ my.exe на B.

SysInternals\PsExec.exe -u username -p password -accepteula \\ServerC -i 0 -d -w \\ServerB\Nightly\Server \\ServerB\Nightly\Server\server.exe

У пользователя есть все необходимые права.

Но для параметра -w (рабочий каталог) явно нужен путь относительно сервера, на который я указываю. Любая идея?

Не зная, что делает ваше приложение, вам нужно определить рабочий путь? Я могу ошибаться, но я не верю, что пути UNC поддерживаются? Как насчет небольшого трюка и создания карты сетевого диска и объединения ее в сценарий? Что-то вроде:

pushd \\ServerB\Nightly\Server
server.exe
popd

Поместите это в скрипт, затем вызовите с помощью psexec:

psexec -u username -p password \\machine -accepteula -i 0 -d \\serverb\nightly\server\myscript.bat

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

В своем сценарии вы можете скопировать то, что хотите запустить, на диск локального компьютера и после запуска удалить его. Используйте robocopy.exe \ UNC-Path LocalDestionation, чтобы скопировать файл, запустить его и после этого удалить. Помните, что у вас всегда есть переменные окружения, такие как% Temp% для использования.

Для вашего случая, использующего Sysinternals PSExec, вы можете попробовать создать летучую мышь, которая запускает каждую строку летучей мыши, запущенную с PSExec. Вы можете использовать переменные среды в летучей мыши, используя команду SET для таких вещей, как имя пользователя.

Альтернатива Я рекомендую вам протестировать это бесплатное программное обеспечение, которое позволяет очень легко запускать удаленные команды с помощью простого графического интерфейса: Развертывание PQD.

попробуйте также с переключателем -e (не пытается загрузить профиль пользователя), не слишком уверен в переключателе «-accepteula», так как psexec не запрашивает один AFAIK, и это не похоже на действительный переключатель для psexec ...

Два переключателя «-i» и «-d» противоречат друг другу, поскольку -i заставляет его работать в интерактивном режиме, а -d говорит только использовать его с неинтерактивными приложениями. У меня никогда не было необходимости использовать какой-либо переключатель.

Лучший способ приблизиться к сложной операции с удаленными системами, которую я нашел, - это сначала попытаться запустить ее локально, а затем медленно начать перемещать различные компоненты в удаленные устройства и заставлять их работать оттуда. Таким образом, вы точно поймете, в чем проблема в синтаксисе исходной попытки.

использование psexec

Я смог сделать это так:

psexec -s -username domain\username -p MyPassw@rd @c:\temp\computers.txt \\fileserver\SCCMClient\CCMSetup.exe

-s было необходимо, чтобы не получать ошибки "доступ запрещен" -username и -p были необходимы для подключения к файловому серверу с исполняемыми файлами

Я лично считаю, что PSExec - отличный маленький инструмент!