Как использовать планировщик задач Windows для запуска исполняемого файла на удаленном сервере? [закрыто]

Я собираюсь объединить все наши запланированные задачи, которые выполняются на разных серверах (Win 2008 R2) в нашем домене, на одном «сервере планирования задач» . Я разработчик, поэтому даже не уверен, хорошая ли это идея или просто головная боль обслуживания. Один из наших сетевых специалистов скопировал некоторые задачи, которые я отслеживаю, на новый сервер и попросил меня протестировать их.

Основная проблема, похоже, заключается в том, чтобы заставить приложение, которое задача пытается запустить, запускаться на удаленном сервере, а не на сервере, на котором запланирована задача. Ошибки, которые я вижу, связаны с тем, что ссылка на DLL не найдена.Когда я проверяю сборку, dll существует на удаленном сервере, но не на сервере планирования. Это заставляет меня думать, что даже если у меня заполнено поле «Начать в», на самом деле он не начинается в этом месте.

Мои настройки в диалоговом окне «Действия редактирования» в этом случае следующие:

Program/Script: \\server1\c$\some\long\path\myExe.exe
Add arguments (optional): arg1 arg2
Start in (optional):  \\server1\c$\some\long\path

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

каталог \ update / b / on >> .. \ logs \ logdir.txt

получает ошибку неверного пути, тогда как

dir \\server1\c$\my\path\update /b /on >> \\server1\c$\my\logs\logdir.txt

работает.

Итак, мой технический вопрос - как заставить исполняемый файл (и командный файл) запускаться на удаленном сервере? И мой вопрос сетевого администратора: это хороший способ управлять запланированными задачами или лучше располагать расписания на том же сервере, что и тот, который выполняет обработку?

-1
задан 13 February 2013 в 03:23
1 ответ

Один из способов добиться этого - использовать psexec следующим образом:

psexec /accepteula yourserver.yourdomain CommandToExecuteRemotely

Альтернативой может быть включение PS Remoting на удаленном сервере , тогда ваша запланированная задача может иметь форму

powershell -command "Invoke-Command -ComputerName yourserver.yourdomain  
    -FilePath ""C:\LocalScriptToExecuteRemotely.ps1"""

или

powershell -command "Invoke-Command -ComputerName yourserver.yourdomain  
    -Scriptblock { ScriptblockToExecuteRemotely }"

. Другие альтернативы Powershell можно найти в этой главе об удаленном взаимодействии , например, используя Invoke-RemoteExpression без PS Удаленное взаимодействие включено.

Не забудьте использовать либо escape-символ в стиле Windows CLI (каретка: ^), либо escape-символ в стиле Powershell (обратная кавычка: `), где это применимо.

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


Что касается вопроса администратора: это просто зависит от того, как вы хотите управлять задачами, но поскольку вам уже нужны исполняемые файлы на удаленном сервере,Я думаю, что в целом было бы лучше, чтобы запланированная задача также была настроена на удаленном сервере.

Вышеупомянутые решения могут оказаться полезными, если вы намереваетесь затем удаленно управлять своими запланированными задачами , например, используя ] schtasks в ваших командах / блоках сценариев:]
Обратите внимание, что командлеты Powershell * - ScheduledTask уже включают возможность запуска в удаленном сеансе или на удаленном компьютере…

3
ответ дан 5 December 2019 в 19:17

Теги

Похожие вопросы