Come eseguire uno script PowerShell da Task Scheduler
Sep 16, 2024
Windows Task Scheduler consente agli amministratori di eseguire automaticamente script PowerShell in base a una pianificazione prestabilita o in risposta a eventi di sistema. Ciò migliora la coerenza, risparmia tempo e riduce gli errori umani per compiti come backup, aggiornamenti, monitoraggio e pulizie. Gli script possono essere programmati tramite l'interfaccia grafica o i cmdlet di PowerShell (Register-ScheduledTask, New-ScheduledTaskTrigger, ecc.). Le migliori pratiche includono l'utilizzo di account con privilegi minimi, registrazione e gestione degli errori, firma degli script e revisioni regolari per prevenire abusi.
Introduzione
Windows Task Scheduler consente agli utenti di pianificare l'esecuzione di compiti in una data e ora specifiche, secondo una programmazione definita o quando vengono innescati da determinati eventi. Questo strumento integrato nei sistemi operativi Windows aiuta a migliorare l'efficienza e garantisce l'esecuzione affidabile di compiti ripetitivi. In questo blog, vi mostreremo come eseguire uno PowerShell script from Task Scheduler e come creare compiti pianificati utilizzando PowerShell.
Configurazione degli script PowerShell per l'automazione
Comprensione di Task Scheduler
La libreria del Task Scheduler è una raccolta di tutti i task definiti, organizzati in cartelle. Per ogni task, l'interfaccia grafica fornisce le seguenti schede:
- Generale — Il nome e la descrizione dei compiti, l'account sotto il quale dovrebbero essere eseguiti e altre opzioni di sicurezza.
- Inneschi — Le condizioni che avviano un compito, che possono essere basate sul tempo (ad esempio, giornaliere, settimanali), basate su eventi (ad esempio, all'avvio del sistema o all'accesso dell'utente) o personalizzate
- Azioni — Le operazioni eseguite quando viene attivato un compito, come l'avvio di un programma.
- Condizioni — Criteri che controllano l'esecuzione di un compito in base allo stato del computer, come l'esecuzione solo quando il computer è inattivo per un periodo specifico
- Impostazioni — Configurazioni aggiuntive che determinano come e quando viene eseguito un compito, come il riavvio di un compito in caso di fallimento o l'interruzione se la sua esecuzione supera il tempo previsto
- Storia — Una cronologia delle esecuzioni dei compiti, inclusi gli orari di inizio, di fine e eventuali errori o avvisi riscontrati
Vantaggi dell'utilizzo di Task Scheduler per automatizzare gli script di PowerShell
L'automazione degli script PowerShell tramite il PowerShell Task Scheduler offre numerosi vantaggi, tra cui i seguenti:
- Risparmio di tempo — Quando esegui script PowerShell da Task Scheduler, puoi risparmiare un notevole quantitativo di tempo che altrimenti sarebbe speso per l'esecuzione manuale. Questo è particolarmente vantaggioso per gli script che devono essere eseguiti fuori dall'orario di lavoro.
- Coerenza — L'automazione riduce il rischio di errori umani. Uno script PowerShell programmato eseguirà esattamente le stesse operazioni nello stesso ordine ogni volta.
- Affidabilità — Con Task Scheduler, puoi garantire che compiti di manutenzione critici, come le routine di backup e pulizia, vengano eseguiti regolarmente. Questo aumenta l'affidabilità del sistema e riduce il rischio di perdita di dati o guasti del sistema.
- Efficienza delle risorse — Pianificando l'esecuzione degli script durante i periodi di basso utilizzo del sistema, puoi garantire che i compiti intensivi non degradino le prestazioni del sistema nelle ore di punta.
- Flessibilità — Task Scheduler offre una varietà di opzioni di pianificazione, inclusa la capacità di eseguire compiti all'avvio del sistema, al logon, quando inattivo o in risposta a eventi specifici. Questo livello di controllo ti permette di adattare l'esecuzione degli script alle tue esigenze specifiche.
- Gestione degli errori — È possibile configurare le attività pianificate per tentare una nuova esecuzione in caso di fallimento di uno script, inviare email al termine o al fallimento dell'attività e scrivere log degli eventi. Ciò consente di risolvere tempestivamente i problemi e di rimanere informati sullo stato di salute dei processi automatizzati.
- Sicurezza — Con Task Scheduler, gli script PowerShell possono essere eseguiti sotto specifici account utente, inclusi quelli con privilegi elevati, senza richiedere che l'utente sia loggato. Questo aiuta a garantire che i compiti sensibili siano eseguiti in modo sicuro e permette l'automazione di script che richiedono privilegi superiori. Tuttavia, poiché gli avversari possono sfruttare compiti programmati e triggerati per scopi malevoli, si dovrebbe utilizzare un sistema di auditing o tracciamento per monitorare i compiti per potenziali abusi. Netwrix Access Analyzer è un buon esempio di strumento che può mitigare attività malevole.
- Integrazione ed estensibilità — La programmazione di script PowerShell consente scenari di automazione sofisticati che possono reagire ad eventi di sistema, orchestrare più compiti e altro ancora.
- Gestione di flussi di lavoro complessi — Task Scheduler può gestire flussi di lavoro complessi, come collegare insieme compiti o utilizzare logica condizionale basata sul successo o fallimento di un compito precedente. Questo è inestimabile per scenari in cui molteplici compiti interdipendenti devono essere orchestrati con attenzione.
- Facilità d'uso — Nonostante le sue potenti funzionalità, Task Scheduler dispone di un'interfaccia grafica intuitiva che semplifica il processo di configurazione e gestione dei compiti automatizzati. Per gli utenti più avanzati, Task Scheduler può anche essere configurato e gestito utilizzando strumenti da riga di comando o cmdlet di PowerShell.
Passaggi per creare una pianificazione per uno script PowerShell
Prima di pianificare uno script PowerShell con Task Scheduler, assicurati che lo script sia salvato con l'estensione .ps1 e che sia stato testato per garantirne il corretto funzionamento.
Quindi seguire i seguenti passaggi:
- Apri Utilità di pianificazione: Premi Win + R, digita taskschd.msc nella finestra di dialogo Esegui e premi Invio.
- Nel riquadro Actions a destra, fare clic su Create Task.
- Nella scheda General, eseguire le seguenti operazioni:
- Inserisci un nome e una descrizione per il tuo compito.
- Configura le opzioni di sicurezza appropriate. Ad esempio, selezionando Esegui indipendentemente dal login dell'utente garantirai che l'attività venga eseguita anche se non sei connesso. Se lo script richiede diritti amministrativi, seleziona Esegui con privilegi massimi.
Fai clic su OK per salvare le modifiche.
- Vai alla scheda Triggers e clicca su Nuovo. Nel riquadro New Trigger scegli quanto segue:
- Quando dovrebbe iniziare il compito
- La frequenza con cui dovrebbe essere eseguito, come una volta, giornalmente o settimanalmente
- Qualsiasi opzione aggiuntiva di cui hai bisogno, come interrompere il compito se si protrae per un tempo maggiore di quello specificato
Fai clic su OK per salvare le modifiche.
- Vai alla scheda Actions.Clicca su New per configurare una nuova azione per eseguire il tuo script PowerShell:
- Dal menu a tendina Action, seleziona Avvia un programma.
- In the Program/script field, enter powershell.exe.
- Nel campo Add arguments inserire quanto segue, assicurandosi di specificare il percorso completo dello script: -File C:\Scripts\scriptname.ps1
- Nel campo Start in specificare la directory dove si trova lo script, se necessario. Questo di solito non è richiesto a meno che lo script non si basi su percorsi relativi.
Fai clic su OK per salvare le modifiche
- Fai clic su OK e vai alla scheda Condizioni. Imposta le condizioni sotto le quali l'attività dovrebbe essere eseguita. Ad esempio, puoi specificare che l'attività dovrebbe essere eseguita solo se il computer è collegato alla corrente o solo se è connesso a una specifica rete. Fai clic su OK per salvare le tue selezioni.
- Successivamente, vai alla scheda Settings e configura quanto segue:
- Consenti l'esecuzione dell'attività su richiesta — Seleziona questa opzione se desideri eseguire manualmente l'attività.
- Se il compito fallisce — Specificare cosa dovrebbe succedere in caso di fallimento del compito, come il riavvio dello stesso.
- Interrompi il compito se si protrae per più tempo di — Imposta un limite di tempo se applicabile.
- Se il compito è già in esecuzione — Scegli cosa dovrebbe succedere se il compito viene attivato ma è già in corso.
- Fai clic su OK per finalizzare il tuo compito. Ti verrà chiesto di inserire le credenziali per l'account utente sotto il quale verrà eseguito il compito.
Configurazione avanzata e migliori pratiche
Controllo dell'esecuzione e della visibilità degli script
Per controllare l'esecuzione e la visibilità degli script quando si utilizza Task Scheduler, è possibile utilizzare i seguenti parametri nel campo Add arguments della scheda Action:
- NoExit — Aggiungi questo parametro per impedire che la finestra di PowerShell o del prompt dei comandi si chiuda automaticamente dopo l'esecuzione dello script. Questa opzione è utile per il debug o quando si desidera che la finestra della console rimanga aperta per controllare direttamente l'output.
- Comando — Utilizza questo parametro per specificare il percorso completo di uno script da eseguire e gli eventuali argomenti necessari.
Ad esempio, potresti specificare quanto segue nel campo Add arguments:
-NoExit -Command -File C:\Scripts\InstallOfSoftware.ps1
Reindirizzamento dell'output a un file di testo o altre destinazioni per registrare l'attività dello script
Risoluzione dei problemi comuni del Task Scheduler di Windows
Ecco alcuni problemi comuni che possono impedire l'esecuzione pianificata dei tuoi compiti come previsto e come risolverli.
Il compito non si avvierà o non verrà eseguito.
- Assicurati che l'account utente che esegue il compito abbia i permessi necessari per eseguire il compito e accedere a tutti i file o directory a cui fa riferimento il compito.
- Ricontrolla le impostazioni di configurazione del compito, come le impostazioni del trigger, i parametri dell'azione e le condizioni.
- Assicurati che il compito sia abilitato.
- Se il compito utilizza un account utente specifico per l'esecuzione, verifica se la password è stata cambiata e aggiornala per il compito se necessario.
Il compito viene eseguito manualmente ma non automaticamente.
- Verificate che le impostazioni del trigger siano corrette; i problemi comuni includono orari di inizio errati, pianificazioni configurate in modo errato.
- Verifica le condizioni che potrebbero impedire l'esecuzione del compito, come il fatto che verrà eseguito solo se il computer è inattivo per un tempo specifico. Se il compito è programmato per essere eseguito durante i periodi di inattività o quando il computer non è in uso, le impostazioni di alimentazione come la modalità di sospensione o ibernazione possono impedire l'esecuzione. Regola le impostazioni di alimentazione per assicurare che il sistema rimanga attivo affinché il compito possa essere eseguito.
Il task si interrompe inaspettatamente o si comporta in modo non corretto.
- Verifica se c'è abbastanza memoria, CPU o spazio su disco disponibile affinché il compito venga eseguito senza problemi.
- Se il compito prevede l'esecuzione di uno script, assicurati che lo script funzioni correttamente al di fuori del Task Scheduler. Considera come le variabili d'ambiente, i percorsi o i permessi potrebbero differire nelle due situazioni.
Il compito fallisce con codici di errore specifici.
Cerca il codice di errore fornito nella cronologia dell'attività o nel registro eventi per ottenere informazioni aggiornate sul problema e su come risolverlo.
Il task viene eseguito ma non fa nulla.
- Verificate che l'azione impostata per il compito, ad esempio l'avvio di un programma, sia configurata correttamente.
- Se lo script non viene eseguito a causa delle restrizioni delle policy, prendi in considerazione l'aggiunta dell'argomento -ExecutionPolicy Bypass per sovrascrivere la policy di esecuzione del sistema e consentire l'esecuzione dello script.
- Assicurati che i percorsi ai file eseguibili o agli script siano corretti e che tutti gli argomenti della riga di comando siano specificati correttamente.
- Se il compito deve produrre un output su un file o un'altra destinazione, assicurati che i percorsi siano corretti e che l'account in esecuzione disponga dei necessari permessi di scrittura.
Richiedi una prova gratuita di Monitor and Secure Scheduled Tasks
Esempi pratici per casi d'uso comuni
Script di esempio per compiti amministrativi comuni
Di seguito sono riportati alcuni casi d'uso pratici per compiti amministrativi comuni che potresti voler automatizzare utilizzando Windows Task Scheduler, insieme a degli script di esempio.
Esegui il backup di una cartella
Lo script seguente può essere utilizzato per eseguire il backup di una cartella nell'unità C in una cartella nell'unità D locale:
Copy-Item -Path "C:\Source\*" -Destination "D:\Backup" -Recurse -Force
Installa aggiornamenti software
Per aggiornare automaticamente il software o i componenti del sistema, utilizza questo script:
Install-WindowsUpdate -AcceptAll -AutoReboot
Invia notifiche agli utenti
Per inviare promemoria riguardo eventi imminenti a una lista di distribuzione email, utilizza questo script:
Send-MailMessage -To "AbbeyCrawford@milkyway.com" -From "AbbeyTucker@milkyway.com" -Subject "Daily Meeting Reminder" -Body "This is a reminder about the meeting scheduled for 10:00 AM." -SmtpServer "smtp.milkyway.com"
Esegui Scansioni di Sicurezza
Per eseguire automaticamente scansioni di sicurezza per rilevare malware o vulnerabilità, utilizza questo script:
Start-MpScan -ScanType QuickScan
Pulire i file temporanei
Questo script rimuove i file temporanei dalle directory specificate:
Get-ChildItem -Path C:\Windows\Temp\*, $env:TEMP\* -Recurse | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
Riavvia un servizio
Per riavviare un servizio, come un server web o il servizio di Microsoft SQL server, puoi utilizzare comandi come i seguenti:
Restart-Service -Name W3SVC
Restart-Service -Name MSSQLSERVER
Pianificazione di script PowerShell complessi
È possibile pianificare anche script PowerShell più complessi. Come illustrato negli esempi sottostanti, è una buona prassi includere commenti che descrivano lo scopo delle diverse sezioni di uno script.
Rapporto sull'utilizzo dello spazio su disco
Questo script fornisce una rapida panoramica dell'utilizzo dello spazio su disco:
# Script to report disk space usage
Get-PSDrive -PSProvider FileSystem |
Select-Object Name, @{Name="UsedGB";Expression={"{0:N2}" -f (($_.Used - $_.Free)/1GB)}}, @{Name="FreeGB";Expression={"{0:N2}" -f ($_.Free/1GB)}}, @{Name="TotalGB";Expression={"{0:N2}" -f ($_.Used/1GB)}} |
Format-Table -AutoSize
Monitorare la salute del sistema
Per monitorare le prestazioni del sistema nel tempo, puoi utilizzare questo script PowerShell per registrare l'utilizzo della CPU, l'utilizzo della memoria e lo spazio su disco in un file:
# Define the log file path
$logFile = "C:\SystemHealthLog.txt"
# Function to get system health metrics
function Get-SystemHealth {
# Get CPU usage
$cpuUsage = Get-Counter '\Processor(_Total)\% Processor Time'
# Get memory usage
$memoryUsage = Get-Counter '\Memory\Available MBytes'
# Get disk space usage for C: drive
$diskSpace = Get-PSDrive -Name C
$usedSpace = $diskSpace.Used / 1MB
$freeSpace = $diskSpace.Free / 1MB
$totalSpace = $diskSpace.Used + $diskSpace.Free / 1MB
# Format output
$cpuUsageFormatted = "{0:N2}%" -f $cpuUsage.CounterSamples[0].CookedValue
$memoryUsageFormatted = "{0:N2} MB" -f $memoryUsage.CounterSamples[0].CookedValue
$diskSpaceFormatted = "Used: {0:N2} MB, Free: {1:N2} MB, Total: {2:N2} MB" -f $usedSpace, $freeSpace, $totalSpace
# Write to log file
$logEntry = "Date and Time: $(Get-Date) - CPU Usage: $cpuUsageFormatted, Memory Available: $memoryUsageFormatted, Disk Space: $diskSpaceFormatted"
Add-Content -Path $logFile -Value $logEntry
}
# Run the health check
Get-SystemHealth
Modifica o eliminazione di attività pianificate
Prima di modificare o eliminare una o più attività pianificate, potresti voler rivedere tutte le attività esistenti. Per vedere l'elenco delle attività, esegui semplicemente il cmdlet Get-ScheduledTask.
Modifica di un'attività pianificata
Per modificare un'attività, clicca con il tasto destro su di essa e seleziona Properties, come mostrato di seguito. Quindi modifica le impostazioni richieste e clicca su OK per salvare le modifiche.
Eliminazione di un'attività pianificata
Per eliminare un'attività pianificata, clicca con il tasto destro su di essa, seleziona Elimina e conferma l'azione.
Creazione di Attività Pianificate con Script di PowerShell
Introduzione alla pianificazione di PowerShell
Per creare attività pianificate, hai un'altra opzione oltre a Task Scheduler: PowerShell. Creare e gestire attività pianificate direttamente dall'interfaccia di PowerShell può migliorare notevolmente la produttività, la precisione e l'affidabilità della sessione, specialmente quando si gestiscono sistemi remoti tramite una CimSession.
Di seguito sono riportati alcuni dei principali comandi PowerShell utilizzati per creare e gestire attività pianificate:
- New-ScheduledTask — Crea un nuovo oggetto di attività pianificata in PowerShell
- Register-ScheduledTask — Registra un nuovo task pianificato
- New-ScheduledTaskAction — Definisce le azioni delle attività pianificate
- New-ScheduledTaskPrincipal — Memorizza l'account utente sotto il quale verrà eseguito il task
- New-ScheduledTaskSettingsSet — Definisce le impostazioni dei task pianificati
- New-ScheduledTaskTrigger — Definisce i trigger per i task pianificati
Vantaggi dell'uso di PowerShell per la gestione dei compiti pianificati
I vantaggi dell'utilizzo di PowerShell per eseguire attività pianificate includono i seguenti:
- Facilità d'uso — È semplice specificare trigger complessi, condizioni e azioni.
- Flessibilità — Puoi scrivere ed eseguire script sofisticati in grado di svolgere un'ampia gamma di compiti, dalla semplice pulizia di file a complesse diagnosi e riparazioni di sistema.
- Risparmio di tempo — Utilizzare un'attività pianificata di PowerShell per eseguire uno script di PowerShell elimina la necessità di eseguire manualmente compiti ripetitivi o complessi.
- Risoluzione dei problemi più semplice — Gli script di PowerShell possono registrare informazioni dettagliate sugli errori o addirittura tentare di correggerli automaticamente.
- Esecuzione remota — I compiti pianificati possono essere eseguiti e regolati su più macchine. Questo è particolarmente vantaggioso in ambienti di rete più grandi.
- Sicurezza — PowerShell include molte funzionalità di sicurezza, come la policy di esecuzione e gli script firmati, per garantire che solo gli script autorizzati vengano eseguiti sul tuo sistema.
- Efficienza — Utilizzare PowerShell per programmare compiti di solito consuma meno risorse di sistema rispetto agli strumenti di automazione di terze parti.
- Adattabilità — I task pianificati in PowerShell possono essere facilmente modificati, replicati o estesi per soddisfare le esigenze in evoluzione.
Creazione di un'attività pianificata con PowerShell
Uno script PowerShell per creare un'attività pianificata include i seguenti elementi:
- $action — Questo specifica cosa farà il compito, come eseguire uno script PowerShell, avviare un'applicazione o eseguire un comando:
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\InstallOfSoftware.ps1"
- $trigger — Questo specifica quando verrà eseguito il compito, come in un momento specifico, quotidianamente o settimanalmente, o in base agli eventi di sistema:
$trigger = New-ScheduledTaskTrigger -Daily -At "10:00AM"
- $principal — Questo specifica l'account utente sotto il quale verrà eseguito il compito:
$principal = New-ScheduledTaskPrincipal -UserId “NT AUTHORITY\SYSTEM” -LogonType Password
- $settings — Questo include opzioni su come gestire i fallimenti dei compiti, le condizioni per l'esecuzione e il comportamento quando alimentato a batteria:
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable
- Register-ScheduledTask — Questo registra il task con Task Scheduler:
Register-ScheduledTask -TaskName “Installation of Software" -Action $action -Trigger $trigger -Principal $principal -Settings $settings
Qui sotto puoi vedere l'esecuzione dello script completo:
Considerazioni sulla sicurezza e migliori pratiche
Implicazioni di sicurezza dei Task pianificati
Quando programmi compiti, sia che si utilizzi Task Scheduler o PowerShell, assicurati di prestare attenzione alle seguenti preoccupazioni di sicurezza:
- Gestione dei permessi — I task pianificati vengono eseguiti con i permessi dell'account sotto il quale sono programmati, quindi possono essere soggetti ad abusi. Questo rischio è maggiore se l'account dispone di accessi elevati. Assicurati di eseguire i task pianificati utilizzando account che dispongano dei permessi minimi necessari.
- La sicurezza degli script — Gli script o gli eseguibili richiamati dai task pianificati possono di per sé essere vettori di vulnerabilità della sicurezza. Ad esempio, gli attori malevoli possono sostituire o modificare script memorizzati in directory non protette per eseguire comandi dannosi.
- Il dirottamento di processo — Se un'attività pianificata è prevedibile e viene eseguita con privilegi elevati, un attaccante potrebbe sostituire lo script che l'attività dovrebbe eseguire con codice malevolo.
- Audit e responsabilità — È fondamentale mantenere log dettagliati della creazione, modifica ed esecuzione di attività pianificate per rilevare e rispondere ad attività malevole.
- Negazione del servizio — Programmando compiti che consumano eccessive risorse di sistema in momenti critici, un attaccante potrebbe interrompere la capacità del sistema ospite di eseguire le sue funzioni previste.
Esecuzione di script con il contesto di sicurezza appropriato e le implicazioni dell'uso di account altamente privilegiati
Per minimizzare la superficie di attacco, esegui sempre gli script con un account che abbia il minimo privilegio necessario per il compito e evita di eseguire script con diritti amministrativi. Per fare ciò, comprendi quali risorse, permessi e limiti di throttling uno script richiede. Ad esempio, lo script necessita di modificare file di sistema, accedere a dati specifici o comunicare attraverso la rete?
Inoltre, utilizzare le policy di esecuzione per controllare le condizioni in base alle quali gli script possono essere eseguiti. Ad esempio, è possibile limitare il sistema ad eseguire script solo se firmati da un editore fidato.
Per gli script che devono essere eseguiti come un servizio, prendere in considerazione l'uso di un account servizio gestito di Windows (MSA) o un account servizio gestito di gruppo (gMSA), i quali sono più sicuri perché le loro password sono gestite automaticamente.
Migliori pratiche per la creazione di attività pianificate
Per massimizzare i benefici dell'uso dei task pianificati, segui queste migliori pratiche:
- Assicurati che ogni compito abbia uno scopo chiaro. Documenta sia ciò che il compito fa sia il motivo per cui è necessario per aiutare altri che potrebbero lavorare con il compito in futuro.
- Stabilire convenzioni di denominazione chiare. Per evitare confusione e un'esecuzione impropria dei compiti, assicurarsi che ogni compito pianificato abbia un percorso univoco.
- Rivedere e testare. Esaminare attentamente gli script prima di eseguirli, specialmente se ottenuti da fonti esterne, prestando attenzione a qualsiasi codice sospetto. Prima di distribuire un'attività pianificata in un ambiente di produzione, testarla approfonditamente in un ambiente di staging o di sviluppo. È anche una buona prassi mantenere un repository di script approvati.
- Implementare la gestione degli errori. Assicurarsi che ogni script possa gestire gli errori comuni con eleganza e avvisare i membri del team pertinenti quando c'è un problema che richiede attenzione.
- Comprendere le dipendenze. Se un compito dipende da servizi esterni o dati, assicurarsi che ci siano controlli per la disponibilità e una gestione elegante delle interruzioni o dei ritardi.
- Considerate l'utilizzo delle risorse. Cercate modi per rendere i compiti meno intensivi in termini di risorse, ad esempio modificando la loro logica o frequenza di esecuzione. I compiti dovrebbero essere eseguiti con la frequenza necessaria, ma non così spesso da creare problemi di prestazione. Nella scelta del momento in cui eseguire i compiti, considerate fattori come altre attività del sistema e potenziali conflitti.
- Presta attenzione alla sicurezza. Oltre alle linee guida sulla sicurezza fornite sopra, assicurati di utilizzare misure di autenticazione e autorizzazione appropriate per compiti che richiedono l'accesso a risorse protette e assicurati che i compiti non espongano involontariamente dati sensibili.
- Evitate di fare affidamento su impostazioni predefinite per compiti critici. Personalizzate la configurazione dei compiti in base alle vostre esigenze specifiche.
- Conservare gli script in una posizione sicura. Assicurarsi che solo gli utenti che devono eseguire o modificare gli script abbiano accesso.
- Firma i tuoi script. Ove possibile, firma i tuoi script con un certificato digitale rilasciato da un'autorità di certificazione (CA) affidabile. Questo non solo verifica la paternità dello script ma assicura anche che lo script non sia stato manomesso da quando è stato firmato.
- Implementare il monitoraggio e l'allerta. I log sono inestimabili per diagnosticare problemi e comprendere le azioni di un compito. Gli strumenti che notificano agli amministratori attività insolite degli script o degradazione delle prestazioni consentono una risposta più rapida.
- Rivedere e aggiornare regolarmente i task pianificati. Questo include l'aggiornamento di eventuali dipendenze, la modifica delle pianificazioni in base alle nuove esigenze aziendali e il ritiro dei task che non sono più necessari.
Conclusione
Windows Task Scheduler consente agli utenti aziendali e agli amministratori di eseguire script PowerShell in date e orari specifici su base regolare, come quotidianamente o settimanalmente, o quando sono soddisfatte condizioni specifiche. Automatizzare i compiti utilizzando Task Scheduler risparmia tempo garantendo al contempo che i compiti siano eseguiti con precisione e affidabilità. Gli utenti più avanzati possono utilizzare PowerShell per creare e gestire compiti pianificati.
Quando si pianificano gli script, assicurarsi di seguire le migliori pratiche come documentare lo scopo del compito, utilizzare la gestione degli errori e il logging all'interno degli script e utilizzare il principio del least privilege principle per evitare permessi eccessivi, che possono rappresentare una minaccia per la sicurezza se compromessi e utilizzati dagli avversari.
FAQ
Cos'è il Programmatore di attività di Windows?
Windows Task Scheduler è uno strumento integrato nel sistema operativo Windows che consente agli utenti di pianificare attività e processi per l'esecuzione automatica. Con Task Scheduler, è possibile impostare attività per l'esecuzione in un giorno e orario specificati o a un certo intervallo, come quotidianamente o settimanalmente.
Perché dovrei usare Task Scheduler per automatizzare gli script di PowerShell?
Scegliendo di eseguire script PowerShell da Task Scheduler, puoi automatizzare compiti ripetitivi, il che garantisce che vengano eseguiti in modo affidabile e preciso senza ulteriori sforzi da parte tua.
Come faccio ad aprire Task Scheduler?
Premi Win + R per aprire la finestra di dialogo Esegui. Digita taskschd.msc e premi Invio.
Come posso creare un nuovo compito in Task Scheduler?
Fai clic su Create Task nel riquadro Azioni sul lato destro della finestra del Task Scheduler. Fornisci un nome e una descrizione per il task; scegli le impostazioni appropriate per le schede Azione, Trigger, Condizioni e Impostazioni; e fai clic su Salva.
Quali sono i vantaggi di nominare e descrivere un compito?
Fornire un nome utile e una descrizione chiara che spiega cosa fa il compito e perché è necessario aiuta a garantire che ogni compito abbia uno scopo chiaro e facilita la manutenzione futura da parte di altri che lavorano con il compito.
Come faccio a determinare il trigger per un'attività pianificata?
Nella scheda Trigger per un'attività, puoi specificare quando l'attività deve essere eseguita, come su base programmata, all'avvio del sistema o all'accesso dell'utente, così come l'intervallo di ripetizione e altri criteri.
Come posso configurare Task Scheduler per eseguire uno script PowerShell?
- Vai alla scheda Actions, clicca su New e seleziona Start a program dal menu a tendina.
- In the Program/script field, input powershell.exe.
- Nel campo Add arguments inserire quanto segue, sostituendo l'argomento InstallofSoftware.ps1 con il nome del proprio script:
-File C:\Scripts\InstallofSoftware.ps1
Come posso configurare le attività per eseguirle anche quando l'utente non è connesso?
Nella scheda Generale dell'attività, selezionare l'opzione Esegui indipendentemente dal fatto che un utente sia connesso o meno.
Come posso gestire i privilegi dei task e assicurarmi che gli script si fermino dopo una durata specificata?
Le attività hanno i privilegi dell'account sotto il quale vengono eseguite. Puoi specificare l'account per eseguire l'attività nella scheda Generale.
Per garantire che uno script si fermi dopo una durata prestabilita, nella scheda Impostazioni, selezionare Stop the task if it runs longer than e scegliere il numero desiderato di ore o giorni.
Come posso controllare la visibilità dell'esecuzione degli script?
È possibile controllare l'esecuzione e la visibilità degli script aggiungendo il parametro -NoExit o -Command nel campo Add Argument nella scheda Azione.
Quali consigli possono aiutare a risolvere i problemi dei compiti che non vengono eseguiti come previsto?
La scadenza o la modifica della password possono causare il fallimento di un'attività. Le attività pianificate configurate in modo non corretto o progettate con intenti malevoli (ad esempio, attività che consumano eccessive risorse di sistema) possono portare a un rifiuto del servizio sulla macchina host, compromettendone la disponibilità e le prestazioni.
Come posso modificare un'attività pianificata esistente?
Fai clic con il pulsante destro del mouse sul compito nella libreria del Programmatore di attività di Windows, seleziona Proprietà e apporta le modifiche desiderate alle impostazioni del compito.
Come faccio a eliminare un'attività pianificata?
Fare clic con il pulsante destro del mouse sul compito nella libreria del Task Scheduler e scegliere Delete.
Quali sono i vantaggi dell'utilizzo di PowerShell per pianificare le attività?
Rispetto all'interfaccia grafica di Task Scheduler, PowerShell offre un controllo più granulare sulla configurazione dei task, sulla gestione degli errori e sul logging, e rende più semplice definire una logica di pianificazione personalizzata. PowerShell consente inoltre di pianificare ed eseguire task su più sistemi remoti da una posizione centrale.
A cosa servono i cmdlet New-ScheduledTaskTrigger e Register-ScheduledTask?
The New-ScheduledTaskTrigger cmdlet is used to define triggers for the task, and the Register-ScheduledTask cmdlet is used to register the task with Windows Task Scheduler.
What are the security implications of scheduled tasks?
Running a scheduled task with a highly privileged accounts increases security risks if the account is compromised, so always choose the account with the least privilege principle in mind.
How should I run scripts with the appropriate security context?
Most important, run scripts under an account with the least privileges necessary to complete the task, and use managed service accounts (MSAs) or group managed service accounts (gMSAs) when appropriate. Consider using execution policies to allow restrict only scripts that are signed by a trusted publisher, and whenever possible, sign your scripts with a digital certificate issued by a trusted Certificate Authority.
What are the best practices for organizing and managing scheduled tasks?
Key best practices include storing scripts in a secure location with access permissions controlled and evaluating scripts in a test environment before implementing them in production.
FAQ
Condividi su
Scopri di più
Informazioni sull'autore
Tyler Reese
Vicepresidente della Gestione Prodotti, CISSP
Con più di due decenni nel settore della sicurezza del software, Tyler Reese conosce intimamente le sfide di identità e sicurezza in rapida evoluzione che le aziende affrontano oggi. Attualmente, ricopre il ruolo di direttore del prodotto per il portfolio di Netwrix Identity and Access Management, dove le sue responsabilità includono la valutazione delle tendenze di mercato, la definizione della direzione per la linea di prodotti IAM e, in ultima analisi, la soddisfazione delle esigenze degli utenti finali. La sua esperienza professionale spazia dalla consulenza IAM per le aziende Fortune 500 al lavoro come architetto aziendale di una grande compagnia diretta al consumatore. Attualmente detiene la certificazione CISSP.
Scopri di più su questo argomento
Powershell Elimina il file se esiste
PowerShell Write to File: "Out-File" e Tecniche di Output del File
Come creare nuovi utenti di Active Directory con PowerShell
Come eseguire uno script PowerShell
Cos'è PowerShell? Una guida completa alle sue funzionalità e utilizzi