Visualizzazione post con etichetta Disable-ComputerRestore. Mostra tutti i post
Visualizzazione post con etichetta Disable-ComputerRestore. Mostra tutti i post

mercoledì 7 dicembre 2016

Windows: Gestire il ripristino di sistema tramite PowerShell

La funzione ripristino di sistema ha fatto il suo debutto con Windows XP. Tale funzionalità risulta molto utile nel caso si riscontrino problemi con Windows, permettendo il ripristino dell'intero sistema ad una data antecedente a quella in cui si è presentato il problema.

In quest'articolo verrà mostrato come gestire tale funzionalità tramite i seguenti comandi PowerShell:
Enable-ComputerRestore
Disable-ComputerRestore
Checkpoint-Computer
Get-ComputerRestorePoint
Restore-Computer

Per poter utilizzare tali cmdlet è necessario eseguire PowerShell come amministratore:
Dal menu Start ricercare PowerShell, quindi cliccare sul collegamento con il tasto destro del mouse e selezionare Esegui come amministratore. All'eventuale richiesta di conferma visualizzata dal UAC (Controllo dell'account utente), confermare cliccando su SI.

Windows 10: Avviare PowerShell come amministratore
FIG 1 - Windows 10: Avviare PowerShell come amministratore

I cmdlet indicati permettono di abilitare/disabilitare la protezione ripristino di sistema, creare nuovi punti di ripristino ed eseguire il restore. Vediamoli in dettaglio.

Enable-ComputerRestore
Enable-ComputerRestore consente di abilitare il ripristino di sistema e specificare su quali dischi attivare la protezione. I dischi su cui va abilitata la protezione da parte del ripristino di sistema vanno specificati separati da virgola come indicato di seguito 
Enable-ComputerRestore "C:\", "D:\"
Sui dischi/partizioni non specificati esplicitamente all'interno del comando, la protezione verrà disabilitata. Impostazioni più dettagliate, come la percentuale del disco da utilizzare, possono essere settate tramite il Pannello di Controllo oppure agendo sulle chiavi di registro presenti in 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore


Disable-ComputerRestore
La sintassi del comando Disable-ComputerRestore è del  tutto analoga a quella vista per Enable-ComputerRestore con la differenza che in questo caso la protezione viene disabilitata per i dischi/partizioni specificati.
Disable-ComputerRestore "C:\", "D:\"


Checkpoint-Computer
Checkpoint-Computer consente di creare un nuovo punto di ripristino. La sintassi è molto semplice, basta far seguire al comando una breve descrizione, contenuta tra apici, da assegnare al punto di ripristino. Ad es.
Checkpoint-Computer "Punto di ripristino antecedente ad Office 2016"


Get-ComputerRestorePoint
Il cmdlet Get-ComputerRestorePoint visualizza tutti i punti di ripristino disponibili e basta eseguirlo senza alcun parametro
Get-ComputerRestorePoint
Oltre alla data/ora e la descrizione del punto di ripristino viene riportato anche il relativo numero sequenziale (SequenceNumber).
Nel caso in cui sia già stato eseguito un ripristino di sistema è possibile verificare il punto di ripristino utilizzato tramite il comando 
Get-ComputerRestorePoint -LastStatus


Restore-Computer
Per ripristinare il sistema si utilizza il cmdlet Restore-Computer indicando il relativo SequenceNumber del punto di ripristino che si intende utilizzare:
Restore-Computer -RestorePoint <SequenceNumber>
Ad esempio, supponendo di voler ripristinare il punto di ripristino avente come SequenceNumber 10 il comando è il seguente
Restore-Computer -RestorePoint 10
Per conoscere il SequenceNumber del punto di ripristino più recente si utilizza il comando 
(Get-ComputerRestorePoint)[-1].sequencenumber
Combinando i 2 cmdlet Restore-ComputerGet-ComputerRestorePoint, come indicato di seguito, possiamo automatizzare il restore al punto di ripristino più recente:
Restore-Computer -RestorePoint (Get-ComputerRestorePoint)[-1].sequencenumber
Il cmdlet Restore-Computer viene eseguito senza richiedere alcuna conferma all'utente. Per visualizzare un messaggio di conferma bisogna aggiungere al cmdlet il parametro -confirm:$true
Restore-Computer -RestorePoint (Get-ComputerRestorePoint)[-1].sequencenumber -confirm:$true

Cmdlet PowerShell per la gestione dei punti di ripristino
FIG 2 - Cmdlet PowerShell per la gestione dei punti di ripristino