Как мне создавать задачи с одинаковыми триггерами? - PullRequest
0 голосов
/ 21 июня 2020

Как мне создать известные задачи с одинаковыми триггерами, свойствами и т. Д. c. Такие как все они запускаются, когда пользователь входит в систему. Задачи имеют определенные имена, такие как Task_1, Task_2, Task_3 и c. Я не знаю, как использовать команду foreach в PowerShell.

Ответы [ 3 ]

1 голос
/ 21 июня 2020

Задачи могут быть на удивление сложными. Когда я впервые прочитал ваш вопрос, мне показалось, что вы хотели скопировать триггер из одной задачи в несколько других. Это грубо, но вы можете сделать что-то вроде этого:

$Trigger = (Get-ScheduledTask -TaskName "NameOfTheTemplatTask").Triggers[0]
Set-ScheduledTask -TaskName "NameOfDestinationTask" -Trigger $Trigger

Примечание: вам придется обновить имена задач.

Учитывая ваши комментарии к Ответу Alex_P Я лучше понимаю. Вам просто нужно создать триггер, сохранить его в переменной, а затем указать эту переменную в качестве аргумента параметра -Triggers в командлете New-ScheduledTask.

$NewAction    = New-ScheduledTaskAction -Execute 'C:\windows\system32\notepad.exe'
$NewTrigger   = New-ScheduledTaskTrigger -AtLogOn
$NewSchedTAsk = New-ScheduledTask -Trigger $NewTrigger -Action $NewAction 
Register-ScheduledTask -TaskName TestTask -TaskPath "\" -Action $NewAction -Trigger $NewTrigger

Очевидно, это всего лишь пример, и вы потребуется обновить информацию для вашей среды и целей.

Примечание: не забудьте Register-ScheduledTask

Вы можете обернуть это в ForEach l oop чтобы получить столько задач, сколько вы хотите ...

$NewAction  = New-ScheduledTaskAction -Execute 'C:\windows\system32\notepad.exe'
$NewTrigger = New-ScheduledTaskTrigger -AtLogOn

$Tasks = @('Task_1', 'Task_2', 'Task_3')

ForEach($Task in $Tasks)
{
    $NewSchedTAsk = New-ScheduledTask -Trigger $NewTrigger -Action $NewAction 
    Register-ScheduledTask -TaskName $Task -TaskPath "\" -Action $NewAction -Trigger $NewTrigger
}

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

Вам также следует ознакомьтесь с MS Docs по модулю scheduleTask, в котором размещены обсуждаемые командлеты. Вы найдете похожие примеры, более проверенные, чем то, что я сколотил на ходу.

0 голосов
/ 22 июня 2020

Задачи - это просто XML файлов, расположенных в указанных ниже местах.

# File system:
Get-ChildItem -Path "$env:windir\Tasks"

# Registry:
Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks'
Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree'

Вы можете скопировать их в другое место, отредактировать и переименовать, чтобы использовать их в качестве шаблона, или просто экспортировать из пользовательского интерфейса один раз, либо через cmd.exe, либо через PowerShell, при необходимости измените и импортируйте обратно.

Следующие ниже примеры команд будут экспортировать / импортировать запланированную задачу. Однако не забудьте обновить команду ...

"\TASK-PATH-TASKSCHEDULER\TASK-NAME," "%UserProfile%\EXPORT-FOLDER-PATH\TASK-EXPORT-NAME.xml

..., указав сведения о вашем устройстве.

schtasks /query /xml /tn "\TASK-PATH-TASKSCHEDULER\TASK-NAME" > "%UserProfile%\EXPORT-FOLDER-PATH\TASK-EXPORT-NAME.xml"

Или с помощью PowerShell

Export-ScheduledTask -TaskName "TASK-NAME" -TaskPath "\TASK-PATH-TASKSCHEDULER\" | 
out-file C:\PATH\TO\EXPORT-FOLDER\TASK-EXPORT-NAME.xml

Command для импорта запланированной задачи и нажмите Enter:

schtasks /create /xml "%UserProfile%\IMPORTED-FOLDER-PATH\TASK-INPORT-NAME.xml" /tn "\TASKSCHEDULER-FOLDER-PATH\TASK-INPORT-NAME" /ru "COMPUTER-NAME\USER-NAME"

Или с помощью PowerShell

Register-ScheduledTask -xml (Get-Content 'C:\PATH\TO\IMPORTED-FOLDER-PATH\TASK-INPORT-NAME.xml' | 
Out-String) -TaskName "TASK-IMPORT-NAME" -TaskPath "\TASK-PATH-TASKSCHEDULER\" -User COMPUTER-NAME\USER-NAME –Force
0 голосов
/ 21 июня 2020

Я бы начал примерно так:

$tasks = @('Task_1', 'Task_2', 'Task_3')

$tasks | ForEach-Object {
  Start-ScheduledTask -TaskName $_
}

Вот ссылка на Start-ScheduledTask .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...