In Windows, l'Utilità di pianificazione integrata può essere utilizzata per eseguire un'azione in base a una pianificazione o quando si verifica un determinato evento. Questa guida spiega come configurare uno script PowerShell per l'esecuzione automatica utilizzando l'Utilità di pianificazione di Windows. Lo script PS1 deve essere eseguito in background, non visualizzare popup ed essere eseguito indipendentemente dalle impostazioni correnti dei criteri di esecuzione degli script PowerShell.
In questo esempio, voglio eseguire il fileC:PSOutlook_Email_to.ps1File di script di PowerShell ogni 10 minuti.
Per saperne di più:Generatore di script AI: trasforma le idee in script con l'intelligenza artificiale
- Apri ilUtilità di pianificazioneconsole eseguendo
taskschd.msccomando - Espandere l'albero della libreria dell'Utilità di pianificazione. Per comodità, crea una cartella separata per le tue attività pianificate personalizzate. Fare clic con il tasto destro e selezionareCrea attività.

- NelGeneralescheda, specificare il nome dell'attività e l'utente con cui verrà eseguita. L'attività può essere eseguita automaticamente: – quando l'utente specifico ha effettuato l'accesso (
Run only the task is logged in)– o se l'utente ha effettuato l'accesso o meno (Run whether user is logged on or not).La seconda modalità è quella utilizzata più spesso. Nel secondo caso, è possibile specificare che l'attività venga eseguita per conto di un utente specifico (il Gestore credenziali utilizzato per archiviare la password dell'utente). Se l'attività richiede elevazione, abilita l'opzione 'Esegui con i privilegi più elevatiopzione.


Per evitare di utilizzare una password memorizzata, è possibile configurare l'attività in modo che venga eseguita come NT AUTHORITYSYSTEM con i privilegi più elevati. Per questo, entra
SYSTEMnelUtentecampo.

In un ambiente AD, le attività pianificate possono essere eseguite per conto degli account del servizio gestito del servizio gMSA. - NelTriggerscheda, specificare la condizione o l'ora di avvio dell'attività di pianificazione. Ad esempio, per eseguire un'attività quando un utente accede, seleziona l'opzione "All'accesso' attiva e seleziona una frequenza di10minuti nel 'Ripeti l'attività ogniopzione.


- Se l'attività viene eseguita per conto di SYSTEM o di un utente con una password memorizzata, selezionare per eseguire l'attività all'avvio di Windows (All'avvio) e di riavviarlo periodicamente.


- Oppure usa ilSecondo un programmatrigger per impostare l'ora esatta di inizio dell'attività. È possibile configurare più trigger di avvio per una singola attività.
Lo scheduler può anche eseguire un'attività quando si verifica un evento specifico nel Visualizzatore eventi (vedere Come eseguire un'attività pianificata al termine di un'altra attività). - Quindi vai aAzionischeda. Specificare l'azione da intraprendere quando si verifica uno degli eventi attivati. In questo caso voglio eseguire uno script PowerShell. SelezionareNuovo->Avviare un programma. Configura le seguenti impostazioni di azione:
Programma/copione:powershell.exe
Aggiungi argomenti (facoltativo):-ExecutionPolicy Bypass -NonInteractive -WindowStyle Hidden -File "C:PSOutlook_Email_to.ps1"
Prima di eseguire lo script tramite l'Utilità di pianificazione, verificare che non restituisca errori in modalità automatica. Utilizzare il seguente comando:powershell.exe -file C:PS Outlook_Email_to.ps1 -NoExit - Le seguenti opzioni vengono utilizzate per eseguire uno script PowerShell:
-File– percorso completo del file di script (PS1)-ExecutionPolicy— Configurare le impostazioni dei criteri di esecuzione degli script PowerShell per la sessione corrente. Le impostazioni dei criteri correnti vengono ignorate e lo script viene comunque eseguito ifBypassareè specificato;-NonInteractive– Non visualizzare richieste interattive all'utente-WindowStyle Hidden– Nascondere la finestra della console di PowerShell all'utente (lo script viene eseguito nascosto). La finestra del prompt di PowerShell potrebbe apparire e scomparire temporaneamente durante l'esecuzione dello script se l'attività di pianificazione è impostata per essere eseguita quando l'utente accede. Non vi è alcuna richiesta lampeggiante solo per gli script avviati nella sessione 0 della console (indipendentemente dall'accesso dell'utente).-NoProfile— aggiungi questa opzione se lo script può funzionare senza un profilo utente. Impedisce il caricamento del profilo utente, velocizzando l'esecuzione dello script; - È possibile abilitare le seguenti opzioni utili nel fileImpostazionischeda:
Consenti l'esecuzione dell'attività su richiesta
Se l'attività in esecuzione non termina quando richiesto, forzarne l'arresto
Non avviare una nuova istanza - Salva le impostazioni dell'attività. Controlla che la nuova attività appaia nel fileUtilità di pianificazionesnap-in. Fare clic su un'attività e selezionarlaCorrereper testarlo.


Se lo script PowerShell è stato eseguito correttamente, verrà visualizzato un messaggio nel risultato dell'ultima esecuzione:The operation completed sucessfully (0x0).
Per registrare tutte le azioni in un file di registro di testo, ti consigliamo di aggiungere una semplice funzione di registrazione allo script di PowerShell. Ciò consente di visualizzare informazioni dettagliate su tutte le azioni eseguite in qualsiasi momento.
- Usa ilStoriascheda per visualizzare la cronologia e i risultati delle precedenti esecuzioni delle attività. La cronologia delle attività non viene salvata per impostazione predefinita nell'Utilità di pianificazione (fare clic suAbilita la cronologia di tutte le attivitàcollegamento nel riquadro Azioni).


Puoi anche creare un'attività di pianificazione di questo tipo per eseguire uno script PowerShell da un prompt dei comandi:
$TaskName="CheckOutlookMailbox"
$Trigger = New-ScheduledTaskTrigger -AtStartup
$Trigger.Repetition = (New-ScheduledTaskTrigger -once -at "12am" -RepetitionInterval (New-TimeSpan -Minutes 10) -RepetitionDuration (New-TimeSpan -Minutes 10)).repetition
$User= "NT AUTHORITYSYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-ExecutionPolicy Bypass -NonInteractive -WindowStyle Hidden -File C:PSOutlook_Email_to.ps1"
Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force
Ci sono alcuni aspetti aggiuntivi da considerare quando si eseguono script PowerShell tramite l'Utilità di pianificazione di Windows:
- Per eseguire lo script nell'ambiente PowerShell Core, esegui
pwsh.exeinvece dipowershell.exe. - Se altri utenti hanno accesso al computer su cui stai eseguendo lo script PowerShell con diritti privilegiati, assicurati di aver modificato le autorizzazioni di accesso NTFS sul file PS1 in modo che non possano modificarlo.
- Se l'attività viene eseguita come utente non privilegiato, il suo account deve essere aggiunto alla politica di sicurezza localeAccedere come processo batch (gpedit.msc-> Configurazione del computer->Impostazioni di Windows->Impostazioni di sicurezza->Politiche locali->Assegnazione dei diritti utente).Verrà visualizzato un avviso durante la creazione di tale attività:
This task requires that the user account specified has Log on as batch job rights


- In un dominio AD è possibile utilizzare l'oggetto Criteri di gruppo per eseguire script PowerShell quando un utente accede o si disconnette oppure quando un computer si avvia o si spegne. Tali script sono noti comescript di accesso.














