Как я могу удаленно выполнить скрипт в Windows?
-
21-08-2019 - |
Вопрос
Я хотел бы, чтобы сервер Windows 2003 запускал сценарий для запуска другого сценария на отдельном компьютере с Windows Server 2008.
Мне сказали, что Powershell может это сделать, и это нормально, но мне нужны более конкретные подробности.
Есть ли у кого-нибудь какие-нибудь советы по этому поводу?
Спасибо!
Решение
псексек от SysInternals
Другие советы
Посмотрите синтаксис AT-команды.Вы можете использовать его, чтобы запланировать запуск процесса на удаленном компьютере.
Команды AT Pridsuls и программы для работы на компьютере в указанное время и дата.Служба расписания должна работать, чтобы использовать команду AT.
AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\\computername] time [/INTERACTIVE]
[ /EVERY:date[,...] | /NEXT:date[,...]] "command"
\\computername Specifies a remote computer. Commands are scheduled on the
local computer if this parameter is omitted.
id Is an identification number assigned to a scheduled
command.
/delete Cancels a scheduled command. If id is omitted, all the
scheduled commands on the computer are canceled.
/yes Used with cancel all jobs command when no further
confirmation is desired.
time Specifies the time when command is to run.
/interactive Allows the job to interact with the desktop of the user
who is logged on at the time the job runs.
/every:date[,...] Runs the command on each specified day(s) of the week or
month. If date is omitted, the current day of the month
is assumed.
/next:date[,...] Runs the specified command on the next occurrence of the
day (for example, next Thursday). If date is omitted, the
current day of the month is assumed.
"command" Is the Windows NT command, or batch program to be run.
Самый простой способ использования будет состоять из двух этапов
а.установка cygwin на удаленный компьютер
б.запустите ssh hudson@mcs '/cygdrive/c/path_to_script.bat'
Говоря о PsExec
, Я бы сильно предложите вместо этого использовать Cygwin/OpenSSH.
SSH имеет множество преимуществ (по сравнению с такими инструментами, как PsExec
или даже индивидуальные услуги).
Например, попробуйте использовать с PsExec
и реализовать то, что эти bash
/ ssh
командные строки делают:
ssh user@remotehost "find . -name something" 2> all.errors.txt
ssh user@remotehost "grep -r something ."
if [ "$?" == "0" ]
then
echo "FOUND"
else
echo "NOT FOUND"
fi
Удачи!
SSH передает (!) статус удаленного stdout/stderr/exit в местный оболочка для проверки
(функция-убийца и общее требование для интеграции удаленного выполнения в логику локальных скриптов)Cygwin/OpenSSH предоставляет стандартный Среда оболочки POSIX
(эффективное инвестирование времени, фундаментальные инструменты, готовность к кроссплатформенности, совместимые привычки и т. д.)Вы все еще можете/всегда бежать все родное Приложение для Windows
(включая автоматическое выполнение*.bat
файлы поcmd
процессор)Вы можете настроить аутентификацию без пароля с использованием открытых ключей.
(подумайте об автоматических автоматизированных задачах)
Кончик
Первоначально у меня были проблемы с одним требованием:
фон sshd
сервис должен был запускать приложения в графическом сеансе пользователя
(чтобы окно приложения появилось в среде рабочего стола).
А приемлемое решение для меня бежал sshd
услуга напрямую в сеансе графического интерфейса пользователя
(запускается автоматически при входе пользователя в систему, перейдите по ссылке, чтобы увидеть изменения в файле конфигурации):
/usr/sbin/sshd -f /home/user/sshd_config
Принятое решение от http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/Q_22959948.html является:
Я предоставил сценарий, который принимает параметры ...В данном случае требуется 4.1) Сервер:Если вы пройдете -сивер, это сделает только один сервер 2) список:Вы можете предоставить список списков серверов.3) Сервис:Название сервиса, которую вы хотите изменить 4) ПРОВЕРКА:здесь не используется.
У меня были некоторые ошибки, которые я изменил в следующем коде.Для использования Cut/вставьте код в файл с именем set-remoteservice.ps1.Обязательно установите свою PerfusionPolicy для запуска сценариев ...этого не будет по умолчанию.Вы делаете это, используя командлет set-executionPolicy.PS> SET -EXECUTICEPOLICY "remoteSigned" для запуска сценария, который вы делаете PS> C: PathToScript Set -RemotEservice.ps1 -list C: serverlist.txt -Service "DHCP"
######################## Param($server,$list,$service,[switch]$verbose)if ($ verbose) {$ verbosepreference = "contul"} if ($ list) {foreach ($ srv in (get-content $ list)) {$ Query = "select * из win32_service, где name = '$ service'" $ myService = get -wmiObject -query $ Query -computer $ srv $ myservice.changestartmode ("Automatic") $ myservice.start ()}} if ($ server) {$ query = "select * from win32_service, где name = '$ service service) '"$ myservice = get -wmiobject -query $ query -computer $ server $ myservice.changestartmode (" Automatic ") $ myservice.start ()}