Come controllare lo spazio su disco utilizzando PowerShell
A volte, tenere d’occhio lo spazio su disco può essere complicato, soprattutto quando si gestiscono più sistemi o si desidera semplicemente un modo rapido per controllare lo spazio rimanente senza dover aprire ripetutamente Esplora file. PowerShell è sorprendentemente utile in questo caso e non è necessario essere un esperto di scripting per ottenere informazioni utili. In sostanza, consente di visualizzare non solo le unità locali, ma anche le macchine remote, il che è piuttosto utile se si sta eseguendo la risoluzione dei problemi o monitorando i server. Ma, naturalmente, per ottenere dati significativi, è necessario eseguire correttamente questi comandi e talvolta modificare alcune impostazioni per assicurarsi che tutto funzioni senza intoppi.
Come controllare lo spazio su disco con PowerShell: il metodo di base
Ottenere informazioni su tutte le tue unità
La prima cosa da fare è capire a cosa serve Get-PSDrive. Elenca tutte le unità riconosciute da PowerShell, incluse le unità di rete e i provider oltre al file system. Per concentrarsi solo sulle unità di archiviazione, è necessario filtrarle. In genere, si desidera visualizzare le unità che utilizzano spazio di archiviazione, come C:, D: o condivisioni di rete con spazio di archiviazione. Un comando comune è:
Get-PSDrive | Where-Object { $_. Free -gt 0 }
In questo modo vengono recuperate tutte le unità con spazio libero, filtrando tutto ciò che segnala zero o nessuno spazio libero, che potrebbe essere un’unità di sistema o speciale.
Tuttavia, per rendere le cose più chiare, soprattutto se si desiderano solo dischi locali basati su file system, si potrebbe voler specificare:
Get-PSDrive -PSProvider FileSystem | Select-Object Name, Free, Used, Provider
In questo modo vengono visualizzati solo i dischi locali, rendendolo meno ingombro e più utile se si sta monitorando l’archiviazione per principianti o per controlli rapidi.
Monitoraggio di sistemi remoti: perché no?
Anche se si gestisce una rete di server o PC remoti, PowerShell può farlo. Basta avere l’autorizzazione e abilitare la comunicazione remota. Il comando è sostanzialmente:
Invoke-Command -ComputerName <ComputerName> -ScriptBlock {Get-PSDrive -PSProvider FileSystem | Select-Object Name, Free, Used}
Sostituisci <NomeComputer> con il nome o l’indirizzo IP della macchina di destinazione. Ad esempio, se vuoi controllare un server chiamato “Server01”, il risultato sarà il seguente:
Invoke-Command -ComputerName Server01 -ScriptBlock {Get-PSDrive -PSProvider FileSystem | Select-Object Name, Free, Used}
Questo eliminerà lo spazio libero e utilizzato su ogni partizione del file system. La parte difficile è assicurarsi di aver abilitato il servizio remoto e che l’account utente disponga delle autorizzazioni corrette. A volte, sui server bloccati, il servizio remoto non funziona immediatamente e richiede l’abilitazione tramite Enable-PSRemoting sul sistema remoto, il che è un altro problema.
In una configurazione, questo comando ha funzionato subito, ma in un’altra, non ha funzionato finché non sono state impostate le autorizzazioni corrette o non è stata abilitata la comunicazione remota. Non so perché le cose varino, ma è un problema comune.
Automatizza e ricevi avvisi: un po’ di magia nello scripting
Per chi ama essere un nerd, è possibile integrare il tutto in uno script che viene eseguito in base a una pianificazione (ad esempio tramite Task Scheduler), controllando automaticamente lo spazio su disco e inviando persino avvisi via email se lo spazio libero scende sotto, ad esempio, il 10%.È perfetto per gli amministratori che desiderano un monitoraggio costante senza dover fare da babysitter.
Ad esempio, uno script semplice potrebbe apparire così:
if ((Get-PSDrive -PSProvider FileSystem | Where-Object { $_. Free -lt 10GB })) { Send-MailMessage -To "[email protected]" -From "[email protected]" -Subject "Low Disk Space Alert" -Body "One of your drives is running low on space." }
Questa configurazione richiede qualche modifica in più alle impostazioni SMTP, ma il concetto è semplice: controlla i dischi e, se lo spazio è problematico, avvisa automaticamente qualcuno.
Naturalmente, testare questi script e comandi sulla propria configurazione è fondamentale, perché ambienti diversi presentano peculiarità diverse. A volte, PowerShell si rifiuta di connettersi senza autorizzazioni aggiuntive o regole firewall. E su alcune versioni di Windows, la comunicazione remota deve essere attivata esplicitamente.
Perché, ovviamente, Windows deve renderlo più difficile del previsto. Ma una volta configurato, è piuttosto efficace per controlli rapidi o per il monitoraggio continuo.
Riepilogo
- Utilizzare Get-PSDrive per elencare le unità e controllare lo spazio libero.
- Filtra con Where-Object per visualizzare solo le unità con spazio di archiviazione disponibile.
- Utilizzare Invoke-Command per i controlli remoti, assicurandosi che la comunicazione remota sia abilitata e che le autorizzazioni siano corrette.
- Crea script per automatizzare gli avvisi o i controlli regolari, perché i controlli manuali diventano obsoleti in fretta.
Incartare
Tutto sommato, PowerShell è uno strumento sorprendentemente utile per monitorare lo spazio su disco, sia su sistemi locali che remoti. Non è sempre semplicissimo, ma con qualche piccolo accorgimento può evitare un sacco di mal di testa e crash improvvisi. Ricordatevi solo di testare prima i dati su una macchina non critica. Speriamo che questo aiuti qualcuno a tenere sotto controllo il proprio spazio di archiviazione senza dover aprire continuamente Explorer.
Articoli correlati
Questo articolo è stato utile?