> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/powershell-universal/it/automazione/schedules.md).

# Pianificazioni

Pianifichi gli script di PowerShell Universal con intervalli semplici, espressioni CRON, esecuzioni una tantum o processi continui, inclusi account run-as e condizioni.

Assegni pianificazioni agli script per definire la frequenza e altri parametri per uno script, come le credenziali di esecuzione.

{% hint style="info" %}
Le pianificazioni sono memorizzate nel file di configurazione `schedules.ps1`.
{% endhint %}

## Pianificazione di un processo

Per pianificare un processo, vada a **Run > Schedules** e faccia clic sul pulsante New Schedule. Per pianificare uno script, vada alla pagina dello script e faccia clic su Schedule.

È possibile definire pianificazioni in base a selezioni semplici come Every Minute o Every Hour, oppure definire personalmente espressioni CRON per pianificazioni più configurabili. È inoltre possibile eseguire pianificazioni One Time che vengono eseguite una sola volta in una data successiva.

È inoltre possibile definire con quale utente viene eseguito il processo pianificato, nonché quale versione di PowerShell utilizza.

### Pianificazioni semplici

Le pianificazioni semplici sono in realtà solo strumenti di supporto per varie pianificazioni CRON standard. Quando ne seleziona una, viene definita una pianificazione CRON per il suo script.

### CRON

Le pianificazioni CRON utilizzano espressioni CRON per definire le pianificazioni. PowerShell Universal sfrutta una libreria chiamata Cronos. Per altri esempi di espressioni valide, [faccia clic qui](https://github.com/HangfireIO/Cronos).

Di seguito sono riportati alcuni esempi di espressioni CRON di base.

| Espressione          | Descrizione                                                           |
| -------------------- | --------------------------------------------------------------------- |
| `* * * * *`          | Ogni minuto                                                           |
| `0 0 1 * *`          | A mezzanotte, il giorno 1 di ogni mese                                |
| `*/5 * * * *`        | Ogni 5 minuti                                                         |
| `30,45-15/2 1 * * *` | Ogni 2 minuti dall'01:00 all'01:15 e dall'01:45 all'01:59 e all'01:30 |
| `0 0 * * MON-FRI`    | Alle 00:00, dal lunedì al venerdì                                     |

### Una tantum

Le pianificazioni una tantum vengono eseguite una sola volta in futuro. È possibile selezionare l'ora e il giorno in cui verranno eseguite.

### Continue

Le pianificazioni continue vengono eseguite ripetutamente. È possibile definire un ritardo tra ogni esecuzione del processo pianificato.

## Parametri

Le pianificazioni supportano l'impostazione di parametri per gli script. Ad esempio, se dispone di uno script che accetta un parametro, può scegliere di passare un valore al parametro durante la pianificazione.

```powershell
param($UserName)

$UserName
```

All'interno della finestra modale per la definizione della pianificazione, è possibile impostare il valore del parametro.

Quando modifica le pianificazioni da PowerShell, può definire i parametri nel cmdlet `New-PSUSchedule`. Questo cmdlet accetta una hashtable che rappresenta i parametri degli script, in modo da poter passare i valori per la sua pianificazione.

```powershell
New-PSUSchedule -Script "MyScript.ps1" -Cron '* * * * *' -Parameters @{ UserName = 'adam' }
```

## Ambienti

Durante la creazione di una pianificazione, può specificare l'[ambiente](/powershell-universal/it/config/environments.md) in cui eseguire il processo. Per impostazione predefinita, verrà utilizzato l'ambiente predefinito. È possibile definire un ambiente nell'interfaccia utente utilizzando il menu a discesa Environment. È possibile definire un ambiente utilizzando il parametro `-Environment` in `New-PSUSchedule`.

```powershell
New-PSUSchedule -Script "MyScript.ps1" -Cron '* * * * *' -Environment '7.1'
```

## Run As

È possibile definire con quale utente eseguire la pianificazione utilizzando il selettore Run As nell'interfaccia utente. Il selettore Run As contiene un elenco delle [variabili](/powershell-universal/it/piattaforma/variables.md) PSCredential definite. È necessario definire una variabile PSCredential prima che il selettore Run As sia visibile. Per impostazione predefinita, i processi pianificati vengono eseguiti con le credenziali dell'utente che esegue PowerShell Universal.

È possibile definire un utente Run As in uno script utilizzando il parametro `-Credential`. Il valore deve essere il nome della variabile che contiene la sua credenziale.

```powershell
New-PSUSchedule -Script "MyScript.ps1" -Cron '* * * * *' -Credential 'MyUser'
```

## Computer

È possibile selezionare il computer o i computer su cui eseguire la pianificazione. Per impostazione predefinita, le pianificazioni vengono eseguite su qualsiasi computer disponibile. Se seleziona All Computers, la pianificazione viene eseguita su tutti i computer connessi al cluster PSU. Se seleziona un computer specifico, la pianificazione viene eseguita solo su quel computer.

```powershell
New-PSUSchedule -Script "MyScript.ps1" -Cron '* * * * *' -Computer 'PSUNODE1'
```

## Condizioni

È possibile definire condizioni che determinano se una pianificazione debba essere eseguita. Ciò è utile se utilizza gli stessi script di repository per più ambienti. Attualmente, le condizioni non possono essere definite all'interno della console di amministrazione. Le condizioni vengono passate come parametri allo script e alla pianificazione correnti. Lo scriptblock della condizione viene eseguito all'interno dell'ambiente integrato.

La condizione deve restituire true o false. Di seguito è riportato un esempio di condizione in cui la pianificazione viene eseguita solo se esiste una variabile di ambiente denominata `Slot` che contiene il valore `production`.

```powershell
New-PSUSchedule -Script "MyScript.ps1" -Cron '* * * * *' -Condition {
  $ENV:Slot -eq 'production'
}
```

## Sospensione delle pianificazioni

È possibile sospendere una pianificazione impostando la proprietà Paused. Quando una pianificazione è sospesa, non viene eseguita. Ciò è utile per impedire l'esecuzione di una pianificazione senza eliminarla.

## Time out

È possibile impostare un time out per i processi pianificati. Il time out è il numero di minuti prima che il processo pianificato venga annullato.

## Ritardo casuale

La proprietà Random Delay fa sì che una pianificazione venga avviata in un momento compreso tra 0 e 60 secondi dall'orario pianificato. Ciò è utile quando si eseguono molte pianificazioni contemporaneamente. Ad esempio, se avesse 10 pianificazioni che iniziano a mezzanotte, potrebbe voler impostare un ritardo casuale per limitare la contesa di risorse sul servizio PowerShell Universal.

## Disponibile nel branch

Negli ambienti multi-branch, potrebbe essere necessario evitare l'esecuzione delle pianificazioni in base al branch caricato in PowerShell Universal. È possibile utilizzare l'opzione `-AvailableInBranch` su `New-PSUSchedule` per evitare che una pianificazione venga eseguita quando si opera in un determinato branch. Questo valore è disponibile anche nella console di amministrazione nelle impostazioni della pianificazione quando git è abilitato.

## API

* [New-PSUSchedule](/powershell-universal/it/comandi-powershell/new-psuschedule.md)
* [Get-PSUSchedule](/powershell-universal/it/comandi-powershell/get-psuschedule.md)
* [Remove-PSUSchedule](/powershell-universal/it/comandi-powershell/remove-psuschedule.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/powershell-universal/it/automazione/schedules.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
