> 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

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

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

## Pianificazione di un job

Per pianificare un job, vada alla pagina Automation / 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 basate su 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 job pianificato, così come 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'1:00 all'1:15 e dall'1:45 all'1:59 e all'1: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 job pianificato.

## Parametri

Le pianificazioni supportano l'impostazione di parametri per gli script. Ad esempio, se ha 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 dello script, così da poter passare i valori per la sua pianificazione.

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

## Ambienti

Quando crea una pianificazione, può specificare l'[ambiente](/powershell-universal/it/config/environments.md) in cui eseguire il job. Per impostazione predefinita, verrà utilizzato l'ambiente predefinito. È possibile definire un ambiente nell'interfaccia utente tramite l'elenco 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 di [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 job pianificati vengono eseguiti con le credenziali dell'utente che sta eseguendo 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 le sue credenziali.

```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. Questo è utile se utilizza gli stessi script del 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 mettere in pausa una pianificazione impostando la proprietà Paused. Quando una pianificazione è in pausa, non viene eseguita. Questo è utile per impedire l'esecuzione di una pianificazione senza eliminarla.

## Timeout

È possibile impostare un timeout per i job pianificati. Il timeout è il numero di minuti prima che il job 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 rispetto all'orario pianificato. Questo è 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.

## Available in Branch

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

<figure><img src="/files/lOl5WDzkBPJ1leY1NtGc" alt=""><figcaption><p>Available in Branch</p></figcaption></figure>

## 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.
