Поделиться через


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-ScheduledJobOptionSet-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-JobTriggerSet-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

Этот командлет возвращает объект 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.