Indice dei Contenuti
PowerShell continua a essere una delle piattaforme di scripting più versatili per amministratori di sistema e sviluppatori, offrendo un controllo granulare su sistemi Windows e oltre. Nel 2025, le esigenze dell’IT moderno hanno spinto la comunità a sviluppare script innovativi per migliorare produttività, sicurezza e automazione. In questo articolo, esploreremo i migliori script PowerShell del 2025 che ogni professionista IT dovrebbe conoscere.
1. Automazione delle Patch di Sicurezza
Con l’aumento delle minacce informatiche, mantenere i sistemi aggiornati è più cruciale che mai. Uno script particolarmente popolare quest’anno è quello che automatizza il controllo, il download e l’installazione delle patch di sicurezza tramite Windows Update.
Caratteristiche principali:
- Controllo periodico delle patch mancanti.
- Report dettagliati inviati via email.
- Opzioni di pianificazione personalizzabili.
Esempio di codice:
# Controllo e installazione delle patch di sicurezza
Install-Module -Name PSWindowsUpdate -Force
# Scarica e installa aggiornamenti critici
Get-WindowsUpdate -Install -AcceptAll -AutoReboot
# Genera un report
Get-WindowsUpdate -PSWUSettings | Out-File -FilePath "C:\Reports\WindowsUpdateReport.txt"
Questo script analizza anche gli aggiornamenti pendenti per le app installate nel sistema, scaricando in autonomia i pacchetti di aggiornamento ed eseguendo l’installazione in modalità silente.
Di seguito uno script utilizzabile dedicato alla questione:
2. Monitoraggio delle Risorse di Rete
Con la crescente complessità delle infrastrutture di rete, monitorare le risorse critiche è fondamentale. Questo script esegue il ping di dispositivi chiave e avvisa gli amministratori in caso di tempi di risposta elevati o guasti.
E’ possibile modificare lo script inserendo nella prima riga $Servers gli indirizzi IP o i domini che vogliamo monitorare, per la possibilità di invio mail approfondirne la configurazione qui.
Caratteristiche principali:
- Notifiche via email in caso di downtime.
- Log dettagliati delle prestazioni di rete.
Esempio di codice:
# Monitoraggio della rete
$servers = @("192.168.1.1", "192.168.1.2", "angolodiwindows.com")
foreach ($server in $servers) {
if (Test-Connection -ComputerName $server -Count 2 -Quiet) {
Write-Output "$server è raggiungibile."
} else {
Write-Output "$server non è raggiungibile."
Send-MailMessage -From "[email protected]" -To "[email protected]" -Subject "Allarme: Server $server offline" -Body "Il server $server non risponde."
}
}
3. Gestione delle Credenziali con Sicurezza Avanzata
Con l’aumento delle violazioni dei dati, gestire le credenziali in modo sicuro è diventato essenziale. Questo script utilizza il modulo SecretManagement per archiviare e recuperare le credenziali in modo protetto.
Caratteristiche principali:
- Archiviazione sicura delle credenziali.
- Integrazione con vault di terze parti.
- Accesso facilitato alle credenziali per script automatizzati.
Esempio di codice:
# Configurazione del vault e gestione delle credenziali
Install-Module -Name Microsoft.PowerShell.SecretManagement -Force
# Registra un vault
Register-SecretVault -Name LocalStore -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault
Get-SecretVault
# Salva credenziali
Set-Secret -Name "DBCredentials" -Secret (Get-Credential)
# Recupera credenziali
$creds = Get-Secret -Name "DBCredentials"
Write-Output "Credenziali recuperate con successo."
4. Pulizia e Ottimizzazione dei File di Log
I file di log possono crescere rapidamente, occupando spazio prezioso. Questo script automatizza la pulizia dei log vecchi, mantenendo solo quelli rilevanti.
Caratteristiche principali:
- Identificazione e rimozione di file di log obsoleti.
- Creazione di backup dei log importanti.
- Esecuzione pianificata.
Esempio di codice:
# Pulizia dei file di log
$logPath = "C:\Logs"
$retentionDays = 30
# Trova e cancella log più vecchi del periodo di retention
Get-ChildItem -Path $logPath -Recurse | Where-Object {
$_.LastWriteTime -lt (Get-Date).AddDays(-$retentionDays)
} | Remove-Item -Force
Write-Output "Pulizia completata per i log più vecchi di $retentionDays giorni."
5. Creazione di Backup Incrementali
Questo script aiuta a creare backup incrementali dei file più importanti, salvandoli in una directory remota o in un servizio cloud.
Caratteristiche principali:
- Backup solo dei file modificati.
- Opzione per compressione e crittografia dei file.
- Compatibilità con servizi cloud come Azure.
Esempio di codice:
# Backup incrementale
$sourcePath = "C:\AMD"
$destinationPath = "D:\Backup"
# Copia solo i file modificati
Robocopy $sourcePath $destinationPath /MIR /XO /Z /LOG:"C:\BackupLogs\BackupLog.txt"
Write-Output "Backup incrementale completato."
6. Analisi dei Permessi sui File
Garantire che i permessi sui file siano corretti è fondamentale per prevenire accessi non autorizzati. Questo script analizza i permessi di una directory e genera un report dettagliato.
Caratteristiche principali:
- Identificazione di permessi troppo permissivi.
- Generazione di report CSV per analisi approfondita.
Esempio di codice:
# Analisi dei permessi sui file
$path = "C:\SecureData"
$report = "C:\Reports\PermissionReport.csv"
Get-Acl -Path $path | ForEach-Object {
$_.Access | Select-Object @{Name="FilePath"; Expression={$_.Path}}, IdentityReference, FileSystemRights, AccessControlType
} | Export-Csv -Path $report -NoTypeInformation
Write-Output "Report sui permessi generato: $report"
7. Notifiche Proattive sui Rischi di Sicurezza
Grazie all’integrazione con feed di sicurezza e API di analisi, questo script invia notifiche automatiche sugli ultimi rischi di sicurezza che potrebbero influenzare l’infrastruttura.
Caratteristiche principali:
- Raccolta automatica di informazioni da fonti attendibili.
- Invio di notifiche in tempo reale.
Esempio di codice:
# Notifiche di sicurezza
$apiUrl = "https://dominiodamonitorare.com/"
$response = Invoke-RestMethod -Uri $apiUrl -Method Get
foreach ($news in $response.articles) {
Send-MailMessage -From "[email protected]" -To "[email protected]" -Subject "Notizia di Sicurezza: $news.title" -Body $news.description
}
Write-Output "Notifiche di sicurezza inviate con successo."
Conclusione
. Integrarli nel proprio workflow quotidiano non solo migliorerà la produttività, ma contribuirà anche a mantenere l’infrastruttura al sicuro e ottimizzata. Se non hai ancora iniziato a utilizzare questi strumenti, è il momento di farlo!