Register-ScheduledJob
Создает запланированное задание.
Синтаксис
Register-ScheduledJob
[-ScriptBlock] <ScriptBlock>
[-Name] <String>
[-Trigger <ScheduledJobTrigger[]>]
[-InitializationScript <ScriptBlock>]
[-RunAs32]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-ScheduledJobOption <ScheduledJobOptions>]
[-ArgumentList <Object[]>]
[-MaxResultCount <Int32>]
[-RunNow]
[-RunEvery <TimeSpan>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Register-ScheduledJob
[-FilePath] <String>
[-Name] <String>
[-Trigger <ScheduledJobTrigger[]>]
[-InitializationScript <ScriptBlock>]
[-RunAs32]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-ScheduledJobOption <ScheduledJobOptions>]
[-ArgumentList <Object[]>]
[-MaxResultCount <Int32>]
[-RunNow]
[-RunEvery <TimeSpan>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Описание
Командлет Register-ScheduledJob
создает запланированные задания на локальном компьютере.
Запланированное задание — это фоновое задание Windows PowerShell, которое можно запускать автоматически в однократном или повторяющемся расписании. Запланированные задания хранятся на диске и регистрируются в планировщике задач. Задания можно управлять в планировщике задач или с помощью командлетов запланированных заданий в Windows PowerShell.
При запуске запланированного задания создается экземпляр запланированного задания. Экземпляры запланированного задания идентичны фоновым заданиям Windows PowerShell, за исключением того, что результаты сохраняются на диске. Используйте командлеты задания, такие как Start-Job
, Get-Job
и Receive-Job
для запуска, просмотра и получения результатов экземпляров задания.
Используется Register-ScheduledJob
для создания нового запланированного задания. Чтобы указать команды, которые выполняет запланированное задание, используйте параметр ScriptBlock . Чтобы указать скрипт, который выполняется задание, используйте параметр FilePath .
Запланированные задания Windows PowerShell используют те же триггеры заданий и параметры задания, которые планировщик задач использует для запланированных задач.
Параметр триггераRegister-ScheduledJob
добавляет один или несколько триггеров задания, запускающих задание. Параметр триггера необязателен, поэтому можно добавлять триггеры при создании запланированного задания, добавлять триггеры задания позже, добавлять параметр RunNow для немедленного запуска задания, использовать Start-Job
командлет для запуска задания немедленно или сохранять незапланированное запланированное задание в качестве шаблона для других заданий.
Параметр Options позволяет настроить параметры для запланированного задания. Параметр Options является необязательным, поэтому при создании запланированного задания можно задать параметры задания или изменить их в любое время. Поскольку значения параметров задания могут запрещать выполнение запланированного задания, проверьте параметры задания и внимательно настройте их.
Register-ScheduledJob
— одна из коллекций командлетов планирования заданий в модуле PSScheduledJob , включенном в Windows PowerShell.
Дополнительные сведения о запланированных заданиях см. в статьях "Сведения" в модуле PSScheduledJob .
Импортируйте модуль PSScheduledJob, а затем введите Get-Help about_Scheduled*
или просмотрите about_Scheduled_Jobs.
Этот командлет впервые появился в Windows PowerShell 3.0.
Примеры
Пример 1. Создание запланированного задания
В этом примере создается запланированное задание на локальном компьютере.
Register-ScheduledJob -Name "Archive-Scripts" -ScriptBlock {
Get-ChildItem $HOME\*.ps1 -Recurse |
Copy-Item -Destination "\\Server\Share\PSScriptArchive"
}
Register-ScheduledJob
использует параметр Name для создания запланированного Archive-Scripts
задания.
Параметр ScriptBlock выполняет Get-ChildItem
поиск в каталоге $HOME
рекурсивно для .ps1
файлов. Командлет Copy-Item
копирует файлы в каталог, указанный параметром Destination .
Так как запланированное задание не содержит триггер, он не запускается автоматически. Триггеры заданий можно добавить, Add-JobTrigger
использовать Start-Job
командлет для запуска задания по запросу или использовать запланированное задание в качестве шаблона для других запланированных заданий.
Пример 2. Создание запланированного задания с триггерами и настраиваемыми параметрами
В этом примере показано, как создать запланированное задание, имеющее триггер задания и пользовательские параметры задания.
$O = New-ScheduledJobOption -WakeToRun -StartIfIdle -MultipleInstancePolicy Queue
$T = New-JobTrigger -Weekly -At "9:00 PM" -DaysOfWeek Monday -WeeksInterval 2
$path = "\\Srv01\Scripts\UpdateVersion.ps1"
Register-ScheduledJob -Name "UpdateVersion" -FilePath $path -ScheduledJobOption $O -Trigger $T
Переменная $O
сохраняет объект параметра задания, созданный командлетом New-ScheduledJobOption
. Параметры запускают запланированное задание, даже если компьютер неактивный, просыпает компьютер для запуска задания при необходимости и позволяет нескольким экземплярам задания выполняться в серии.
Переменная $T
сохраняет результат из командлета New-JobTrigger
, чтобы создать триггер задания, который запускает задание каждый другой понедельник в 9:00 вечера.
Переменная $path
сохраняет путь к файлу скрипта UpdateVersion.ps1
.
Register-ScheduledJob
использует параметр Name для создания запланированного задания UpdateVersion.
Параметр FilePath используется $path
для указания скрипта, который выполняется заданием. Параметр ScheduledJobOption использует параметры задания, хранящиеся в $O
. Параметр триггера использует триггеры задания, хранящиеся в $T
.
Пример 3. Использование хэш-таблиц для указания триггера и запланированных параметров задания
Этот пример имеет тот же эффект, что и команда в примере 2. Он создает запланированное задание, используя хэш-таблицы для указания значений параметров Trigger и ScheduledJobOption . $O
$T
Переменные, определенные в примере 2, заменяются хэш-таблицами.
$T = @{
Frequency="Weekly"
At="9:00PM"
DaysOfWeek="Monday"
Interval=2
}
$O = @{
WakeToRun=$true
StartIfNotIdle=$false
MultipleInstancePolicy="Queue"
}
Register-ScheduledJob -Trigger $T -ScheduledJobOption $O -Name UpdateVersion -FilePath "\\Srv01\Scripts\Update-Version.ps1"
Пример 4. Создание запланированных заданий на удаленных компьютерах
В этом примере запланированное задание EnergyData создается на нескольких удаленных компьютерах. Запланированное задание запускает скрипт, который собирает необработанные данные и сохраняет его в работающем журнале на удаленном компьютере.
$Cred = Get-Credential
$O = New-ScheduledJobOption -WakeToRun -StartIfIdle -MultipleInstancePolicy Queue
$T = New-JobTrigger -Weekly -At "9:00 PM" -DaysOfWeek Monday -WeeksInterval 2
Invoke-Command -ComputerName (Get-Content Servers.txt) -Credential $Cred -ScriptBlock {
$params = @{
Name = "Get-EnergyData"
FilePath = "\\Srv01\Scripts\Get-EnergyData.ps1"
ScheduledJobOption = $using:O
Trigger = $using:T
}
Register-ScheduledJob @params
}
Переменная $Cred
сохраняет учетные данные в объекте PSCredential для пользователя с разрешениями на создание запланированных заданий. Переменная $O
сохраняет параметры задания, созданные с New-ScheduledJobOption
помощью . Переменная $T
сохраняет триггеры задания, созданные с New-JobTrigger
помощью .
Командлет Invoke-Command
использует параметр ComputerName для получения списка имен серверов из Servers.txt
файла. Параметр Credential получает объект учетных данных , хранящийся в $Cred
.
Параметр ScriptBlock выполняет Register-ScheduledJob
команду на компьютерах в Servers.txt
файле.
Параметры для Register-ScheduledJob
определенных $params
. Параметры name указывают, что задание называется Get-EnergyData
на каждом удаленном компьютере. FilePath предоставляет расположение скрипта EnergyData.ps1
. Скрипт находится на файловом сервере, доступном всем участвующим компьютерам. Задание выполняется по расписанию, указанному триггерами $T
задания и параметрами $O
задания.
Команда Register-ScheduledJob @params
создает запланированное задание с параметрами из блока скрипта.
Пример 5. Создание запланированного задания, выполняющего скрипт на удаленных компьютерах
В этом примере создается запланированное задание CollectData на локальном компьютере. Задание выполняется на нескольких удаленных компьютерах.
$Admin = Get-Credential
$T = New-JobTrigger -Weekly -At "9:00 PM" -DaysOfWeek Monday -WeeksInterval 2
Register-ScheduledJob -Name "CollectEnergyData" -Trigger $T -MaxResultCount 99 -ScriptBlock {
$params = @{
AsJob = $true
ComputerName = (Get-Content Servers.txt)
FilePath = '\\Srv01\Scripts\Get-EnergyData.ps1'
Credential = $using:Admin
Authentication = 'CredSSP'
}
Invoke-Command @params
}
Переменная $Admin
сохраняет учетные данные для пользователя с разрешениями на выполнение команд в объекте PSCredential . Переменная $T
сохраняет триггеры задания, созданные с New-JobTrigger
помощью .
Командлет Register-ScheduledJob
использует параметр Name для создания запланированного задания CollectData на локальном компьютере. Параметр Trigger задает триггеры задания и $T
параметр MaxResultCount увеличивает количество сохраненных результатов до 99.
Параметр ScriptBlock определяет Invoke-Command
параметры с $params
. Параметр AsJob создает объект фонового задания на локальном компьютере, даже если Energydata.ps1
скрипт выполняется на удаленных компьютерах. Параметр ComputerName получает список имен серверов из Servers.txt
файла. Параметр Credential указывает учетную запись пользователя, которая имеет разрешение на выполнение скриптов на удаленных компьютерах. И параметр проверки подлинности указывает значение CredSSP для разрешения делегированных учетных данных.
Команда Invoke-Command @params
выполняется с параметрами из блока скрипта.
Параметры
-ArgumentList
Задает значения параметров скрипта, указанного параметром FilePath или командой, указанной параметром ScriptBlock .
Type: | Object[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Authentication
Задает механизм, используемый при проверке подлинности учетных данных пользователя. Значение по умолчанию ― Default.
Допустимые значения для этого параметра:
Default
Basic
Credssp
Digest
Kerberos
Negotiate
NegotiateWithImplicitCredential
Дополнительные сведения о значениях этого параметра см. в разделе AuthenticationMechanism.
Внимание
Проверка подлинности поставщика служб безопасности учетных данных (CredSSP), при которой учетные данные пользователя передаются на удаленный компьютер для проверки подлинности, предназначены для команд, требующих проверки подлинности на нескольких ресурсах, таких как доступ к удаленному сетевому ресурсу. Этот механизм повышает риск безопасности удаленной операции. Если удаленный компьютер скомпрометирован, учетные данные, передаваемые ему, могут использоваться для управления сетевым сеансом.
Type: | AuthenticationMechanism |
Accepted values: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Запрос подтверждения перед выполнением командлета.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Указывает учетную запись пользователя, обладающую разрешением для выполнения запланированного задания. По умолчанию используется текущий пользователь.
Введите имя пользователя, например User01 или Domain01\User01, или введите объект PSCredential, например из командлетаGet-Credential
. Если ввести только имя пользователя, вам будет предложено ввести пароль.
Учетные данные хранятся в объекте PSCredential , а пароль хранится как SecureString.
Примечание.
Дополнительные сведения о защите данных SecureString см. в разделе "Как безопасна Защита SecureString?".
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FilePath
Указывает сценарий, запускаемый запланированным заданием. Введите путь к .ps1
файлу на локальном компьютере. Чтобы указать значения по умолчанию для параметров скрипта, используйте параметр ArgumentList .
Каждая Register-ScheduledJob
команда должна использовать параметры ScriptBlock или FilePath .
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InitializationScript
Указывает полный путь к скрипту Windows PowerShell (.ps1
). Скрипт инициализации выполняется в сеансе, созданном для фонового задания перед командами , указанными параметром ScriptBlock или скриптом, заданным параметром FilePath . Сценарий инициализации можно использовать для настройки сеанса, например, для добавления файлов, функций или псевдонимов, создания каталогов или проверки наличия необходимых компонентов.
Чтобы указать скрипт, выполняющий команды основного задания, используйте параметр FilePath .
Если скрипт инициализации создает ошибку, даже не завершающаяся ошибка, текущий экземпляр запланированного задания не выполняется, и его состояние завершается ошибкой.
Type: | ScriptBlock |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaxResultCount
Указывает, сколько записей результатов задания хранится для запланированного задания. Значение по умолчанию: 32.
Windows PowerShell сохраняет журнал выполнения и результаты каждого активированного экземпляра запланированного задания на диске. Значение этого параметра определяет количество результатов экземпляра задания, сохраняемых для данного запланированного задания. Когда число результатов экземпляра задания превышает это значение, Windows PowerShell удаляет результаты самого старого экземпляра задания, чтобы освободить место для результатов более нового экземпляра задания.
Журнал выполнения задания и результаты задания сохраняются в $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<Timestamp>
каталоги на компьютере, на котором создается задание. Чтобы просмотреть журнал выполнения, используйте Get-Job
командлет. Чтобы получить результаты задания, используйте Receive-Job
командлет.
Параметр MaxResultCount задает значение свойства ExecutionHistoryLength запланированного задания.
Чтобы удалить текущий журнал выполнения и результаты задания, используйте параметр ClearExecutionHistory командлета Set-ScheduledJob
.
Type: | Int32 |
Position: | Named |
Default value: | 32 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
Задает имя для запланированного задания. Данное имя также используется для всех запущенных экземпляров этого запланированного задания. Это имя должно быть уникальным на компьютере. Этот параметр является обязательным.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RunAs32
Запускает запланированное задание в 32-разрядном процессе.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RunEvery
Используется для указания частоты выполнения задания. Например, используйте этот параметр для выполнения задания каждые 15 минут.
Type: | TimeSpan |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RunNow
Сразу же запускает задание после запуска командлета Register-ScheduledJob
. Этот параметр устраняет необходимость запуска скрипта Windows PowerShell сразу после регистрации и не требует создания триггера, указывающего начальную дату и время.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ScheduledJobOption
Задает параметры для запланированного задания. Введите объект ScheduledJobOptions, например объект, создаваемый с помощью командлета New-ScheduledJobOption
или хэш-табличного значения.
Можно задать параметры запланированного задания при регистрации задания расписания или использовать Set-ScheduledJobOption
Set-ScheduledJob
командлеты для изменения параметров.
Многие параметры и их значения по умолчанию определяют, запускается ли запланированное задание и когда это происходит. Обязательно просмотрите эти параметры перед планированием задания. Описание параметров запланированного задания, включая значения по умолчанию, см. в разделе New-ScheduledJobOption
.
Чтобы отправить хэш-таблицу, используйте следующие ключи. Ключи в следующей хэш-таблице ключи приведены со значениями по умолчанию.
@{StartIfOnBattery=$False; StopIfGoingOnBattery=$True; WakeToRun=$False; StartIfNotIdle=$False; IdleDuration="00:10:00"; IdleTimeout="01:00:00"; StopIfGoingOffIdle=$True; RestartOnIdleResume=$False; ShowInTaskScheduler=$True; RunElevated=$False; RunWithoutNetwork=$False; DoNotAllowDemandStart=$False; MultipleInstancePolicy="IgnoreNew"}
Type: | ScheduledJobOptions |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ScriptBlock
Указывает команды, выполняемые запланированным заданием. Заключите команды в фигурные скобки ({}
) для создания блока скрипта. Чтобы указать значения по умолчанию для параметров команды, используйте параметр ArgumentList .
Каждая Register-ScheduledJob
команда должна использовать параметры ScriptBlock или FilePath .
Type: | ScriptBlock |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Trigger
Задает триггеры для запланированного задания. Введите один или несколько объектов ScheduledJobTrigger , например объекты, возвращаемые New-JobTrigger
командлетом, или хэш-таблицу ключей и значений триггеров задания.
Триггер задания запускает задание расписания. Триггер может указывать однократное или регулярное расписание или событие, например вход пользователя в систему или запуск Windows.
Параметр Триггера является необязательным. Триггер можно добавить при создании запланированного задания, использовать Add-JobTrigger
Set-JobTrigger
командлеты или Set-ScheduledJob
командлеты для добавления или изменения триггеров заданий позже или использовать Start-Job
командлет для немедленного запуска запланированного задания. Можно также создать и поддерживать запланированное задание без триггера, используемое в качестве шаблона.
Чтобы отправить хэш-таблицу, используйте следующие ключи:
- Частота: Ежедневно, Еженедельно, AtStartup, AtLogon
- В: Любая допустимая строка времени
- DaysOfWeek — любое сочетание имен дней
- Интервал — любой допустимый интервал частоты
- RandomDelay: любая допустимая строка интервала времени
- Пользователь: любой допустимый пользователь. Используется только со значением частоты AtLogon
Например:
@{Frequency="Once"; At="3am"; DaysOfWeek="Monday", "Wednesday"; Interval=2; RandomDelay="30minutes"; User="Domain1\User01"}
Type: | ScheduledJobTrigger[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
None
Невозможно передать объекты в этот командлет.
Выходные данные
Этот командлет возвращает объект ScheduledJobDefinition , представляющий зарегистрированное задание.
Примечания
Каждое запланированное задание сохраняется в подкаталоге $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
каталога на локальном компьютере.
Этот подкаталог назван по имени запланированного задания и содержит XML-файл для этого задания и записи его журнала выполнения. Дополнительные сведения о запланированных заданиях на диске см. в about_Scheduled_Jobs_Advanced.
Запланированные задания, создаваемые в Windows PowerShell, отображаются в планировщике задач в папке планировщика Library\Microsoft\Windows\PowerShell\ScheduledJobs
задач. Планировщик заданий можно использовать для просмотра и изменения запланированного задания.
Вы можете использовать планировщик задач, schtasks.exe
средство командной строки и командлеты планировщика задач для управления запланированными заданиями, создаваемыми с помощью командлетов запланированных заданий. Однако командлеты запланированных заданий нельзя использовать для управления задачами, создаваемыми в планировщике задач.
При сбое команды запланированного задания Windows PowerShell возвращает сообщение об ошибке. Однако если задание завершается ошибкой, когда планировщик задач пытается запустить его, ошибка недоступна в Windows PowerShell.
Если запланированное задание не выполняется, используйте следующие методы, чтобы найти причину:
- Убедитесь, что триггер задания настроен правильно.
- Убедитесь, что условия, заданные в параметрах задания, выполнены.
- Убедитесь, что учетная запись пользователя, в которой выполняется задание, имеет разрешение на выполнение команд или скриптов в задании.
- Проверьте журнал планировщика задач для ошибок.
- Проверьте журнал событий планировщика задач для ошибок.
Дополнительные сведения см. в about_Scheduled_Jobs_Troubleshooting.
Связанные ссылки
- Add-JobTrigger
- Disable-JobTrigger
- Disable-ScheduledJob
- Enable-JobTrigger
- Enable-ScheduledJob
- Get-JobTrigger
- Get-ScheduledJob
- Get-ScheduledJobOption
- New-JobTrigger
- New-ScheduledJobOption
- Register-ScheduledJob
- Remove-JobTrigger
- Set-JobTrigger
- Set-ScheduledJob
- Set-ScheduledJobOption
- Unregister-ScheduledJob
PowerShell
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по