Как переименовать задачу в "Назначенная задача" в Windows Server 2008 R2
У меня есть некоторые задачи в планировщике заданий в Windows 2008 R2. Я создал их как администратор, и я вошел в систему как администратор. У меня нет простого способа переименовать задачи. Единственный способ, которым я могу, - это экспортировать конфигурацию задачи в файл XML и повторно импортировать ее в новую задачу, изменить там имя, а затем удалить старую задачу. Есть ли более простой способ?
8 ответов
Поздравляем! Вы столкнулись с проблемой, которая поставила в тупик многих пользователей / администраторов Windows. Нет, вы не можете переименовать задачу, за исключением повторного экспорта, переименования и импорта. Да, это довольно глупо. Возможно, предприимчивый сценарист мог бы создать простой сценарий PowerShell, который автоматизирует это, но до тех пор вы застряли в двухэтапном режиме экспорта / импорта. Сожалею. знак равно
(Вы также не можете переименовать папку задач после ее создания.)
Не лучший способ, но может быть спасителем.
Задачи хранятся в C:\Windows\System32\Tasks
в формате XML, импортируемом с помощью schtasks.exe
, Как сказал Уизли, переименование файла не работает, но Create/Delete будет. Тем не менее, вам нужен работающий пароль пользователя (который у вас есть)
По сравнению с предложением Уизли, он просто пропускает фазу экспорта.
- создайте второе задание, используя первое в качестве шаблона
- удалить оригинал
С помощью srcname
а также dstname
и оболочка администратора в папке Tasks:
C:\Windows\System32\Tasks>schtasks /Create /tn dstname /xml srcname /ru [running username] /rp [password]
SUCCESS: The scheduled task "dstname" has successfully been created.
C:\Windows\System32\Tasks>schtasks /delete /tn srcname /f
SUCCESS: The scheduled task "srcname" was successfully deleted.
Заметки:
- С помощью небольшого количества сценариев вы можете без труда переименовать большую группу задач
- При необходимости вы сможете извлечь исходный RU из XML (в узле
Task/Principals/Principal/UserId
) - Если вы хотите, чтобы schtasks попросил пароль, просто удалите
/rp [password]
часть
Укороченная версия
Вы не можете переименовать запланированную задачу, поскольку это изменитSID
задача выполняется как.
Имя формирует идентификатор безопасности (SID) пользователя, от имени которого будет выполняться задача. Переименование задачи нарушит все существующие разрешения.
Длинная версия
Многие люди жалуются на невозможность переименовать запланированное задание. Для этого есть причина.
Запланированная задача запускается от имени некоторого пользователя , например:
- (хороший)
- (хороший)
-
System
(плохой) - некоторая учетная запись процесса, созданная вручную в Active Directory (плохо)
Это означает, что если вашей задаче требуется доступ к некоторым ресурсам, вам необходимо предоставить этому пользователю доступ к этим ресурсам.
На самом деле мы хотим, чтобы он предоставил доступ к этой задаче ; разрешения должна иметь сама запланированная задача, а не пользователь, от имени которого выполняется задача. Это называется усилением безопасности задач .
Усиление задач
При запуске запланированной задачи планировщик задач добавляет дополнительный идентификатор безопасности (SID) в токен пользователя, выполняющего задачу. Например:
Имя:
NT TASK\[Task name]
(например, «NT TASK\Быстрая бурая лиса перепрыгнула через ленивую собаку»)Идентификатор группы: S-1-5-87-xxxxx (например, S-1-5-87-2312335432-65297056-3549082870-2589977271-250352331)
Sid этой группы генерируется динамически на основе хеша имени запланированной задачи. Группа sid является дочерним элементом авторитетаS-1-5-87
. Относительный идентификатор SID 87
происходит от константы, определенной вwinnt.h
:
SECURITY_TASK_ID_BASE_RID (0x00000057L)
Этот дополнительный SID группы вы можете увидеть в маркере безопасности запущенного процесса:
Генерация SID задач
Вы можете вручную хешировать имя задачи или посмотреть, каким будет гипотетический sid для этой задачи, запустив инструмент командной строки:
>schtasks /showsid /TN "The quick brown fox jumped over the lazy dog"
SUCCESS: The SID "S-1-5-87-2312335432-65297056-3549082870-2589977271-250352331"
for the user name "The quick brown fox jumped over the lazy dog"
has been computed successfully.
И вы можете использовать icacls для предоставления разрешений этой группе:
>icacls yellow.png /grant "*S-1-5-87-2312335432-65297056-3549082870-2589977271-250352331:(M)"
Если запланированное задание находится в папке, вам также необходимо включить эту папку:
>schtasks /showsid /TN "Stackoverflow\Answer Question About Security"
SUCCESS: The SID "S-1-5-87-1865438416-972601292-3915696002-2261943663-3756584440"
for the user name "Stackoverflow-Answer Question About Security"
has been computed successfully.
И, опять же, вы можете предоставить разрешения SID для объекта:
>icacls yellow.png /grant "*S-1-5-87-1865438416-972601292-3915696002-2261943663-3756584440:(M)"
processed file: yellow.png
Successfully processed 1 files; Failed processing 0 files
И вы можете увидеть, что группе были предоставлены разрешения (в данном случае разрешения на изменение ):
Хорошая вещь о:
- эта система виртуальных учетных записей (которая также используется службами с группой и удостоверением приложения IIS)
- и со спец.
Local Service
иNetwork Service
Счета
заключается в том, что эти учетные записи не имеют пароля - ни один пользователь не может войти под ними. Это означает, что вам не придется беспокоиться об утечке пароля.
И кроме того, когда вы используете ,NT SERVICE
, илиIIS APPPOOL
виртуальные учетные записи для назначения разрешений: невозможно выдать себя за этого пользователя. Это не пользователь ни в каком смысле. Это дополнительные границы безопасности, и это очень хорошо.
Конечно, вы не можете его переименовать.
Если вы были внимательны, теперь вы поймете, почему вы не можете переименовать запланированную задачу или переместить ее в другую папку: это изменит хэш имени задачи, изменив ее имя.NT TASK
SID и аннулировать все предоставленные ему разрешения.
К сожалению нет. Вот как это делается сейчас. Я полагаю, что это в целях безопасности, поэтому установленные задачи не могут быть изменены, пока они на самом деле настроены и включены.
Пожалуйста, будьте уверены, прежде чем ответить "Невозможно сделать это", "Невозможно" и т. Д.
Проверьте этот сценарий Power Shell.
Одна возможность - экспортировать задачу, удалить задачу, переименовать файл и импортировать его снова.
Хорошее описание можно найти здесь: переименовать задачу в планировщике задач
Да, это возможно! Просто экспортируйте задачу (щелкните правой кнопкой мыши на задаче / Экспорт...) в виде файла XML (например, на рабочем столе). Затем удалите задачу в Планировщике задач и щелкните правой кнопкой мыши / Импортировать задачу. Выберите ранее сохраненный файл XML, переименуйте задачу и сохраните ее. Вуаля.
Эту функцию можно использовать для переименования задач расписания с помощью PowerShell. Ниже вы можете найти примеры того, как его использовать и как переместить множество задач из одной папки в другую. Функция использует тот факт, что все задачи хранятся в папке Windows. Если у вас нет к ним доступа, вы можете создать новую функцию для экспорта их всех в файлы XML, которые затем можно использовать для загрузки. Или даже сделайте это частью приведенной ниже функции: экспортируйте и импортируйте.
function rename-task {
$src_path = "C:\Windows\System32\Tasks"
$src_xml = Join-Path -Path $src_path -ChildPath $args[0]
(schtasks /Create /tn $args[1] /xml $src_xml) -and (schtasks /delete /tn $args[0] /f)
}
Если вы поместите эту функцию в профиль PS, она будет автоматически загружаться.
C:\Users\USER\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Пример использования:
rename-task "original_name" "target_name"
Поиск задач
Get-ScheduledTask|sls -SimpleMatch pattern
Перемещайте задачи из одной папки в другую. Шаблон — это регулярное выражение, поэтому вы можете передавать множество задач за один проход:
Get-ScheduledTask|select TaskName, TaskPath|where {$_.TaskName -match "PATTERN"}|ForEach{rename-task $_.TaskName $(Join-Path "\TGT_Folder\" $_.TaskName)}