Punti chiave
- Efficienza di PowerShell: Lo script mostra l’efficienza di PowerShell nella gestione delle attività pianificate sui sistemi Windows.
- Gestione delle attività migliorata: Offre informazioni dettagliate sulle attività pianificate, superando i metodi tradizionali della interfaccia grafica.
- Parametri flessibili: Include opzioni per filtrare le attività in base all’origine Microsoft e allo stato di disattivazione.
- Requisito di accesso amministrativo: Richiede l’esecuzione con privilegi di amministrazione per ottenere tutte le funzionalità.
- Output personalizzabile: Fornisce le opzioni per inviare le informazioni sull’attività all’host o per salvarle in un campo personalizzato.
- Sicurezza e conformità: Contribuisce alle attività di auditing ai fini della sicurezza e della conformità.
- Reportistica automatizzata: Semplifica il processo di generazione dei report sulle attività pianificate.
- Integrazione con NinjaOne: Evidenzia la compatibilità e le funzionalità avanzate dello script con gli strumenti di gestione IT di NinjaOne.
- Ampia compatibilità: È compatibile con Windows 10 e Windows Server 2012 R2 e versioni successive.
- Best practice: Sottolinea l’importanza degli audit periodici e di un’attenta gestione dei dati di output per la sicurezza.
La gestione efficace delle attività pianificate in Windows è un aspetto importante dell’amministrazione del sistema e offre visibilità sulle attività automatizzate che mantengono l’infrastruttura IT in funzione. PowerShell, un potente strumento di scripting, svolge un ruolo fondamentale in questo ambito, offrendo una flessibilità e una profondità che supera i tradizionali approcci basati sull’interfaccia grafica.
Background
Questo script PowerShell è stato progettato per i professionisti IT e i fornitori di servizi gestiti (MSP) che necessitano di un modo efficiente per recuperare e gestire le attività pianificate sui sistemi Windows. La possibilità di elencare, analizzare e, a scelta, modificare le attività pianificate è fondamentale per mantenere l’integrità, la sicurezza e le prestazioni del sistema. Lo script risponde a tali esigenze offrendo una panoramica dettagliata delle attività pianificate, con la possibilità di includere o escludere le attività in base a criteri specifici.
Lo script per le attività pianificate:
<# .SYNOPSIS Retrieves a list of scheduled tasks and outputs the list into the activity log. This list can optionally be saved to a Custom Field. .DESCRIPTION Retrieves a list of scheduled tasks and outputs the list into the activity log. This list can optionally be saved to a Custom Field. .EXAMPLE (No Parameters) Scheduled Task(s) Found! TaskName TaskPath State -------- -------- ----- Firefox Background Update 3080... \Mozilla\ Ready PARAMETER: -IncludeMicrosoft Includes Scheduled Tasks created by Microsoft in the report. PARAMETER: -IncludeDisabled Includes Scheduled Tasks that are currently disabled in the report. PARAMETER: -CustomFieldName "ReplaceMeWithAnyMultilineCustomField" Name of a multiline custom field to save the results to. This is optional; results will also output to the activity log. .OUTPUTS None .NOTES Minimum OS Architecture Supported: Windows 10, Windows Server 2012 R2 Release Notes: Initial Release By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use. Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA). #> [CmdletBinding()] param ( [Parameter()] [Switch]$IncludeMicrosoft = [System.Convert]::ToBoolean($env:includeMicrosoftTasks), [Parameter()] [Switch]$IncludeDisabled = [System.Convert]::ToBoolean($env:includeDisabledTasks), [Parameter()] [String]$CustomFieldName ) begin { # Get CustomFieldName value from Dynamic Script Form. if ($env:customFieldName -and $env:customFieldName -notlike "null" ) { $CustomFieldName = $env:customFieldName } # Some Scheduled Tasks require Local Admin Privileges to view. function Test-IsElevated { $id = [System.Security.Principal.WindowsIdentity]::GetCurrent() $p = New-Object System.Security.Principal.WindowsPrincipal($id) $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator) } # Initialize Generic List for Report $Report = New-Object System.Collections.Generic.List[String] } process { if (-not (Test-IsElevated)) { Write-Error -Message "Access Denied. Please run with Administrator privileges." -Category PermissionDenied -Exception (New-Object -TypeName System.UnauthorizedAccessException) exit 1 } # By default, we'll exclude tasks made by Microsoft. They don't always put themselves down as an author. if (-not $IncludeMicrosoft) { $ScheduledTasks = Get-ScheduledTask | Where-Object { $_.Author -notlike "Microsoft*" -and $_.TaskPath -notlike "\Microsoft*" } } else { $ScheduledTasks = Get-ScheduledTask } # We should ignore disabled tasks unless told otherwise. if (-not $IncludeDisabled) { $ScheduledTasks = $ScheduledTasks | Where-Object { $_.State -notlike "Disabled" } } # The activity log isn't going to fit all this output, so we'll trim it if it's too large. if ($ScheduledTasks) { $FormattedTasks = $ScheduledTasks | ForEach-Object { $Name = if (($_.TaskName).Length -gt 30) { ($_.TaskName).Substring(0, 30) + "..." }else { $_.TaskName } $Path = if (($_.TaskPath).Length -gt 30) { ($_.TaskPath).Substring(0, 30) + "..." }else { $_.TaskPath } [PSCustomObject]@{ TaskName = $Name TaskPath = $Path State = $_.State } } Write-Host "Scheduled Task(s) Found!" $Report.Add(( $FormattedTasks | Format-Table TaskName, TaskPath, State -AutoSize | Out-String )) } else { $Report.Add("No Scheduled Tasks have been found.") } # Output our results. Write-Host $Report # Save our results to a custom field. if ($CustomFieldName) { Ninja-Property-Set -Name $CustomFieldName -Value $Report } } end { }
Accedi a oltre 700 script nel Dojo di NinjaOne
Analisi dettagliata
Lo script per le attività pianificate inizia con CmdletBinding, che consente di utilizzarlo come cmdlet PowerShell con vari parametri. I parametri includono flag per includere attività Microsoft e quelle disattivate e un’opzione per salvare l’output in un campo personalizzato.
Nel blocco “begin”, lo script verifica la presenza di privilegi di amministratore, un prerequisito per accedere a tutte le attività pianificate. Si passa quindi al blocco “process”, dove è presente la funzionalità principale. In questo caso, filtra le attività in base all’input dell’utente, escludendo le attività Microsoft o quelle disattivate, come specificato. Lo script tronca in modo intelligente i nomi delle attività e i percorsi per una migliore leggibilità e raccoglie questi dati in un report.
Nel blocco ‘end’, il report viene inviato all’host e, facoltativamente, salvato in un campo personalizzato, per soddisfare le diverse esigenze di reportistica.
Casi d’uso potenziali
Considera un amministratore IT che deve verificare le attività pianificate su più server per garantire la conformità alle policy aziendali. Eseguendo questo script, possono raccogliere e analizzare rapidamente le informazioni sulle attività, identificare quelle non autorizzate o potenzialmente dannose e intraprendere le azioni necessarie.
Confronti
I metodi tradizionali di gestione delle attività pianificate prevedono spesso controlli manuali o l’utilizzo dell’interfaccia grafica di Windows Task Scheduler. Questo script, tuttavia, automatizza il processo e offre maggiore flessibilità, soprattutto in ambienti con numerosi server.
Domande frequenti
- Lo script può essere eseguito su qualsiasi versione di Windows?
- Supporta Windows 10 e Windows Server 2012 R2 e versioni successive.
- È necessario eseguire lo script con privilegi di amministratore?
- Sì, per un accesso completo a tutte le attività.
- L’output dello script per le attività pianificate può essere personalizzato?
- Sì, attraverso il parametro $CustomFieldName.
Implicazioni
L’automazione della gestione delle attività aumenta la sicurezza del sistema, consentendo verifiche regolari e una rapida identificazione delle anomalie. Tuttavia, gli amministratori devono prestare attenzione all’output dello script, poiché potrebbe contenere informazioni sensibili sulle operazioni del sistema.
Raccomandazioni
- Esegui sempre lo script con privilegi amministrativi per avere una panoramica completa.
- Verifica regolarmente le attività pianificate, soprattutto in ambienti con modifiche frequenti.
- Utilizza l’opzione di output dei campi personalizzati per ottenere report e analisi dettagliate.
Considerazioni finali
In un’era in cui l’automazione e la sicurezza sono essenziali, questo script PowerShell è una testimonianza delle capacità di strumenti come NinjaOne. NinjaOne è in grado di semplificare ulteriormente tali processi, integrandosi perfettamente con script come questo per fornire soluzioni complete di gestione IT. Sfruttando gli script, i professionisti IT possono non solo garantire operazioni efficienti, ma anche rafforzare la loro posizione di sicurezza, una necessità nell’attuale panorama digitale in rapida evoluzione.