Как я могу удаленно выполнить скрипт в Windows?

StackOverflow https://stackoverflow.com/questions/861148

  •  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 ()}

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top