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

Остановка запланированной задачи с помощью WMIC

Мне нужно найти способ отключить запланированное задание на удаленном компьютере и ожидание, пока эта задача перестанет выполняться, если она выполняется в данный момент. Если возможно, я бы хотел сделать это через WMIC. Это будет интегрировано в более крупный пакетный процесс.

Насколько я понял:

> wmic /node:%SERVER_NAME% /namespace:\\root\cimv2 path Win32_ScheduledJob

Но это просто возвращается:

No Instance(s) Available.

Поэтому я не уверен, что делаю что-то не так, или, может быть, мне нужно что-то настроить на сервере.

Почему не PowerShell? WMIC довольно крутой, но я не могу не чувствовать, что PowerShell теперь является предпочтительным решением для такого рода вещей:

Invoke-Command -ComputerName $Server -ScriptBlock { Disable-ScheduledJob -Name $Task }

Кажется, что WMIC поддерживает только рабочие места, созданные с WMIC сам или созданный с помощью AT команда (источник - стартовая страница 205).

Это, безусловно, причина, по которой вы получаете No Instance(s) Available.

Я тоже фанат Powershell, но если это проблема, вы можете использовать schtasks утилита (как вы упомянули).

Чтобы удаленно отключить задачу:

schtasks /change /disable /TN "task name" /S server_fqdn /U domain\user /P password

Преимущество отключения задачи заключается в том, что вы уверены, что она будет продолжать работать до тех пор, пока не завершится, в случае, если она была запущена (в этом случае отключаются только будущие исполнения).

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

schtasks /query /TN "task name" /S server_fqdn /U domain\user /P password | finstr Running

(PS: обратите внимание, что я не уверен в статусе "работает", потому что моя ОС Windows французская. Проверьте это на вашем языке).

schtasks /END немедленно убьет задачу.