Condividi tramite


Set-JobTrigger

Modifica il trigger di processo di un processo pianificato.

Sintassi

Set-JobTrigger
   [-InputObject] <ScheduledJobTrigger[]>
   [-DaysInterval <Int32>]
   [-WeeksInterval <Int32>]
   [-RandomDelay <TimeSpan>]
   [-At <DateTime>]
   [-User <String>]
   [-DaysOfWeek <DayOfWeek[]>]
   [-AtStartup]
   [-AtLogOn]
   [-Once]
   [-RepetitionInterval <TimeSpan>]
   [-RepetitionDuration <TimeSpan>]
   [-RepeatIndefinitely]
   [-Daily]
   [-Weekly]
   [-PassThru]
   [<CommonParameters>]

Descrizione

Il cmdlet Set-JobTrigger modifica le proprietà dei trigger di processo dei processi pianificati. È possibile usarlo per modificare l'ora o la frequenza con cui i processi vengono avviati o per passare da una pianificazione basata sul tempo a pianificazioni attivate da un accesso o dall'avvio.

Un trigger di processo definisce una pianificazione o condizioni ricorrenti per l'avvio di un processo pianificato. Sebbene i trigger di processo non vengano salvati su disco, è possibile modificare i trigger di processo di processi pianificati, che vengono salvati su disco.

Per modificare un trigger di processo di un processo pianificato, iniziare usando il cmdlet Get-JobTrigger per ottenere il trigger del processo di un processo pianificato. Quindi inviare tramite pipe il trigger a Set-JobTrigger o salvare il trigger in una variabile e usare il parametro InputObject del cmdlet Set-JobTrigger per identificare il trigger. Usare i parametri restanti di Set-JobTrigger per modificare il trigger di processo.

Quando si modifica il tipo di trigger di un processo, ad esempio la modifica di un trigger di processo da un trigger giornaliero o settimanale a un trigger AtLogon , le proprietà del trigger originali vengono eliminate. Tuttavia, se si modificano i valori del trigger, ma non il tipo, ad esempio da giornaliero a settimanale, verranno modificate solo le proprietà specificate dall'utente. Tutte le altre proprietà del trigger di processo originale vengono mantenute.

Set-JobTrigger è una raccolta di cmdlet di pianificazione dei processi nel modulo PSScheduledJob incluso in Windows PowerShell.

Per altre informazioni sui lavori pianificati, vedere gli argomenti Informazioni nel modulo PSScheduledJob. Importare il modulo PSScheduledJob e quindi digitare: Get-Help about_Scheduled* o vedere about_Scheduled_Jobs.

Questo cmdlet è stato introdotto in Windows PowerShell 3.0.

Esempio

Esempio 1: Modificare i giorni in un trigger di processo

PS C:\> Get-JobTrigger -Name "DeployPackage"
Id         Frequency       Time                   DaysOfWeek              Enabled
--         ---------       ----                   ----------              -------
1          Weekly          9/29/2011 12:00:00 AM  {Wednesday, Saturday}   True

The second command uses the Get-JobTrigger cmdlet to get the job trigger of the DeployPackage scheduled job. A pipeline operator (|) sends the trigger to the **Set-JobTrigger** cmdlet, which changes the job trigger so that it starts the DeployPackage job on Wednesdays and Sundays. The command uses the *Passthru* parameter to return the trigger after the change.
PS C:\> Get-JobTrigger -Name "DeployPackage" | Set-JobTrigger -DaysOfWeek "Wednesday", "Sunday" -Passthru
Id         Frequency       Time                   DaysOfWeek              Enabled
--         ---------       ----                   ----------              -------
1          Weekly          9/29/2011 12:00:00 AM  {Wednesday, Sunday}     True

Questo esempio illustra come modificare i giorni in un trigger di processo settimanale.

Il primo comando usa il cmdlet Get-JobTrigger per ottenere il trigger di processo del processo pianificato DeployPackage. L'output mostra che il trigger avvierà il processo alla mezzanotte del mercoledì e del sabato.

Questo comando non è necessario. È incluso solo per mostrare l'effetto della modifica del trigger.

Esempio 2: Modificare il tipo di trigger del processo

PS C:\> Get-JobTrigger -Name "Inventory"
Id         Frequency       Time                   DaysOfWeek              Enabled
--         ---------       ----                   ----------              -------
1          Daily           9/27/2011 11:00:00 PM                          True
2          AtStartup                                                      True

The second command uses the **Get-JobTrigger** cmdlet to get the *AtStartup* job trigger of the Inventory job. The command uses the *TriggerID* parameter to identify the job trigger. A pipeline operator (|) sends the job trigger to the **Set-JobTrigger** cmdlet, which changes it to a weekly job trigger that runs every four weeks on Monday at midnight. The command uses the *Passthru* parameter to return the trigger after the change.
PS C:\> Get-JobTrigger -Name "Inventory" -TriggerID 2 | Set-JobTrigger -Weekly -WeeksInterval 4 -DaysOfWeek Monday -At "12:00 AM"
Id         Frequency       Time                   DaysOfWeek              Enabled
--         ---------       ----                   ----------              -------
1          Daily           9/27/2011 11:00:00 PM                          True
2          Weekly          10/31/2011 12:00:00 AM {Monday}                True

Questo esempio illustra come modificare il tipo di trigger di processo che avvia un processo. I comandi in questo esempio sostituiscono un trigger di processo AtStartup con un trigger settimanale.

Il primo comando usa il cmdlet Get-JobTrigger per ottenere il trigger di processo del processo pianificato nell'inventario. L'output mostra che il processo ha due trigger giornalieri e un trigger AtStartup .

Questo comando non è necessario. È incluso solo per mostrare l'effetto della modifica del trigger.

Esempio 3: Modificare l'utente in un trigger di processo remoto

PS C:\> Invoke-Command -ComputerName "Server01" -ScriptBlock {Get-ScheduledJob | Get-JobTrigger | Where-Object {$_.User} | Set-JobTrigger -User "Domain01/Admin02"}

Questo comando modifica l'utente in tutti i trigger di processi AtLogon dei processi pianificati nel computer Server01.

Il comando usa il cmdlet Invoke-Command per eseguire un comando nel computer Server01.

Il comando remoto inizia con un comando Get-ScheduledJob che ottiene tutti i processi pianificati nel computer. I processi pianificati vengono inviati tramite pipe al cmdlet Get-JobTrigger, che ottiene i trigger di processo dei processi pianificati. Ogni trigger di processo contiene una proprietà JobDefinition contenente il processo pianificato, quindi il trigger rimane associato al processo pianificato anche quando viene modificato.

I trigger di processo vengono inviati tramite pipe al cmdlet Where-Object, che ottiene i trigger di processo con la proprietà User. I trigger di processo selezionati vengono inviati tramite pipe al cmdlet Set-JobTrigger, che modifica l'utente in Domain01\Admin02.

Esempio 4: Modificare uno dei molti trigger di processo

PS C:\> Get-JobTrigger -Name "SecurityCheck"
Id         Frequency       Time                   DaysOfWeek              Enabled
--         ---------       ----                   ----------              -------
1          Daily           4/24/2013 3:00:00 AM                           True
2          Weekly          4/24/2013 4:00:00 PM   {Sunday}                True
3          Once            4/24/2013 4:00:00 PM                           True

The second command uses the **TriggerID** parameter of the **Get-JobTrigger** cmdlet to get the *Once* trigger of the SecurityCheck scheduled job. The command pipes the trigger to the Format-List cmdlet, which displays all of the properties of the *Once* job trigger.The output shows that the trigger starts the job once every hour (RepetitionInterval = 1 hour) for one day (RepetitionDuration = 1 day).
PS C:\> Get-JobTrigger -Name "SecurityCheck" -TriggerID 3 | Format-List -Property *
At                 : 4/24/2012 4:00:00 PM
DaysOfWeek         :
Interval           : 1
Frequency          : Once
RandomDelay        : 00:00:00
RepetitionInterval : 01:00:00
RepetitionDuration : 1.00:00:00
User               :
Id                 : 3
Enabled            : True
JobDefinition      : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

The third command changes the repetition interval of the job trigger from one hour to 90 minutes. The command does not return any output.
PS C:\> Get-JobTrigger -Name "SecurityCheck" -TriggerId 3 | Set-JobTrigger -RepetitionInterval (New-TimeSpan -Minutes 90)

The fourth command displays the effect of the change.The output shows that the trigger starts the job once every 90 minutes (RepetitionInterval = 1 hour, 30 minutes) for one day (RepetitionDuration = 1 day).
PS C:\> Get-JobTrigger -Name "SecurityCheck" -TriggerID 3 | Format-List -Property *
At                 : 4/24/2012 4:00:00 PM
DaysOfWeek         :
Interval           : 1
Frequency          : Once
RandomDelay        : 00:00:00
RepetitionInterval : 01:30:00
RepetitionDuration : 1.00:00:00
User               :
Id                 : 3
Enabled            : True
JobDefinition      : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

I comandi in questo esempio modificano l'intervallo di ripetizione del trigger di processo Once del processo pianificato SecurityCheck da ogni 60 minuti a ogni 90 minuti. Il processo pianificato SecurityCheck include tre trigger di processo, quindi i comandi usano il parametro TriggerId del cmdlet Get-JobTrigger per identificare il trigger di processo che viene modificato.

Il primo comando usa il cmdlet Get-JobTrigger per ottenere tutti i trigger di processo del processo pianificato SecurityCheck. L'output, che visualizza gli ID dei trigger di processo, rivela che il trigger di processo Once ha l'ID 3.

Parametri

-At

Avvia il processo alla data e all'ora specificate. Immettere un oggetto DateTime , ad esempio quello restituito dal cmdlet Get-Date o una stringa che può essere convertita in un'ora, ad esempio "19 aprile 2012 15:00", "12/31/2013 9:00 PM" o "3am".

Se non si specifica un elemento dell'oggetto DateTime , ad esempio secondi, tale elemento del trigger di processo non viene modificato. Se il trigger del processo originale non includeva un oggetto DateTime e si omette un elemento, il trigger del processo viene creato con l'elemento corrispondente dalla data e dall'ora correnti.

Quando si usa il parametro Once impostare il valore del parametro At su una data e un'ora particolari. Poiché la data predefinita in un oggetto DateTime è la data corrente, se si imposta un'ora prima dell'ora corrente senza una data esplicita, viene creato il trigger di processo per un'ora nel passato.

Gli oggetti DateTime e le stringhe convertite in oggetti DateTime vengono regolati automaticamente per essere compatibili con i formati di data e ora selezionati per il computer locale in Area e lingua in Pannello di controllo.

Type:DateTime
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AtLogOn

Avvia il processo pianificato quando gli utenti specificati accedono al computer. Per specificare un utente usare il parametro User.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AtStartup

Avvia il processo pianificato all'avvio di Windows.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Daily

Specifica una pianificazione ricorrente di un processo giornaliero. Usare gli altri parametri nel parametro Daily impostato per specificare i dettagli della pianificazione.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DaysInterval

Specifica il numero di giorni tra le occorrenze in una pianificazione giornaliera. Ad esempio, il valore 3 avvia il processo pianificato nel 1°, 4°, 7° giorno e così via. Il valore predefinito è 1.

Type:Int32
Position:Named
Default value:1
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DaysOfWeek

Specifica i giorni della settimana in cui viene eseguito un processo pianificato settimanale. Immettere i nomi dei giorni, ad esempio lunedì, giovedì, interi da 0 a 6, dove 0 rappresenta domenica o un asterisco (*) per rappresentare ogni giorno. Questo parametro è obbligatorio nel set di parametri Weekly.

I nomi dei giorni vengono convertiti nei corrispondenti valori interi nel trigger di processo. Quando si racchiudono i nomi dei giorni tra virgolette in un comando, racchiudere il nome di ogni giorno tra virgolette separatamente, ad esempio "Monday", "Tuesday". Se si racchiudono più nomi dei giorni in una coppia di virgolette singole vengono sommati i valori interi corrispondenti. Ad esempio, "Monday, Tuesday" (1, 2) restituisce un valore "Wednesday" (3).

Type:DayOfWeek[]
Accepted values:Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Specifica i trigger di processo. Immettere una variabile contenente oggetti ScheduledJobTrigger o digitare un comando o un'espressione che ottiene oggetti ScheduledJobTrigger , ad esempio un comando Get-JobTrigger. È anche possibile eseguire la pipe di un oggetto ScheduledJobTrigger in Set-JobTrigger.

Se si specificano più trigger di processo, Set-JobTrigger applica le stesse modifiche a tutti i trigger di processo.

Type:ScheduledJobTrigger[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Once

Specifica una pianificazione non ricorrente (una tantum).

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

Restituisce i trigger di processo modificati. Per impostazione predefinita, il cmdlet non genera alcun output.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RandomDelay

Consente un ritardo casuale che inizia all'ora di inizio pianificata e imposta il valore di ritardo massimo. La lunghezza del ritardo è impostata in modo pseudo-casuale per ogni avvio e varia da nessun ritardo all'ora specificata dal valore di questo parametro. Il valore predefinito zero (00:00:00) disabilita il ritardo casuale.

Immettere un oggetto timepan, ad esempio uno restituito dal cmdlet New-TimeSpan o immettere un valore in <formato hours>:minutes>:<<seconds>, che viene convertito automaticamente in un oggetto timepan.

Type:TimeSpan
Position:Named
Default value:00:00:00
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RepeatIndefinitely

Questo parametro, disponibile a partire da Windows PowerShell 4.0, elimina la necessità di specificare un valore TimeSpan.MaxValue per il parametro RepetitionDuration per eseguire ripetutamente un processo pianificato per un periodo di tempo indefinito.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RepetitionDuration

Ripete il processo fino allo scadere del tempo specificato. La frequenza di ripetizione è determinata dal valore del parametro RepetitionInterval. Ad esempio, se il valore di RepetitionInterval è 5 minuti e il valore di RepetitionDuration è 2 ore, il processo viene attivato ogni cinque minuti per due ore.

Immettere un oggetto timepan, ad esempio quello restituito dal cmdlet New-TimeSpan o una stringa che può essere convertita in un oggetto timepan, ad esempio "1:05:30".

Per eseguire un processo per un tempo indefinito, invece, aggiungere il parametro RepeatIndefinitely.

Per arrestare un processo prima della scadenza della durata di ripetizione del trigger di processo, impostare il valore RepetitionDuration su zero (0).

Per modificare la durata o l'intervallo di ripetizione di un trigger di processo Once, il comando deve includere i parametri RepetitionInterval e RepetitionDuration. Per modificare la durata o gli intervalli di ripetizione di altri tipi di trigger di processo, il comando deve includere i parametri Once, At, RepetitionInterval e RepetitionDuration.

Type:TimeSpan
Position:Named
Default value:0
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RepetitionInterval

Ripete il processo in base all'intervallo di tempo specificato. Ad esempio, se il valore di questo parametro è di 2 ore, il processo viene attivato ogni due ore. Il valore predefinito 0 non comporta la ripetizione del processo.

Immettere un oggetto timepan, ad esempio quello restituito dal cmdlet New-TimeSpan o una stringa che può essere convertita in un oggetto timepan, ad esempio "1:05:30".

Per modificare la durata o l'intervallo di ripetizione di un trigger di processo Once, il comando deve includere i parametri RepetitionInterval e RepetitionDuration. Per modificare la durata o gli intervalli di ripetizione di altri tipi di trigger di processo, il comando deve includere i parametri Once, At, RepetitionInterval e RepetitionDuration.

Type:TimeSpan
Position:Named
Default value:0
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-User

Specifica gli utenti che attivano un avvio AtLogon di un processo pianificato. Immettere il nome di un utente in <formato UserName> o <Domain\Username> o immettere un asterisco (*) per rappresentare tutti gli utenti. Il valore predefinito è tutti gli utenti.

Type:String
Position:Named
Default value:All users
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Weekly

Specifica una pianificazione ricorrente di un processo settimanale. Usare gli altri parametri nel set di parametri Weekly per specificare i dettagli della pianificazione.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WeeksInterval

Specifica il numero di settimane tra le occorrenze in una pianificazione di un processo settimanale. Ad esempio, il valore 3 avvia il processo pianificato nella 1°, 4°, 7° settimana e così via. Il valore predefinito è 1.

Type:Int32
Position:Named
Default value:1
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Input

ScheduledJobTrigger

È possibile inviare più trigger di processo a Set-JobTrigger.

Output

None or Microsoft.PowerShell.ScheduledJob.ScheduledJobTrigger

Quando si usa il parametro Passthru, Set-JobTrigger restituisce i trigger di processo modificati. In caso contrario, il cmdlet non genera alcun output.

Note

  • I trigger di processo hanno una proprietà JobDefintion che li associa al processo pianificato. Quando si modifica il trigger di processo di un processo pianificato, il processo viene modificato. Non è necessario usare un comando Set-ScheduledJob per applicare il trigger modificato al processo pianificato.