In questo post, vorrei indicarvi come effettuare un recovery di un file direttamente da powershell in DPM 2007 e 2010.

Supponete, infatti, che vi occorra recuperare al più presto dei file accidentalmente eliminati da qualche utente.

Naturalmente è semplicissimo effettuare questa operazione dalla User Interface, tuttavia, da buoni amministratori sapete benissimo che la fortuna vi volta le spalle proprio nelle situazioni critiche! (Da qui tutte le famose leggi di Murphy).

Come fare, dunque, se la vostra console per un motivo indeterminato non dovesse aprirsi e il vostro telefono continuasse a squillare per avere un riscontro immediato sull’avvenuto recupero?

Bene, in questo caso possiamo ricorrere alla possibilità di effettuare il recupero del nostro tanto richiesto file attraverso powershell.

A tal fine è possibile utilizzare il comando Recover-RecoverableItem.

La sintassi minima, da utilizzare per ottenere il notro scopo, è la seguente:

$recovery = Recover-RecoverableItem oggetto_ripristinare -RecoveryOption opzioni_recovery

Dove:

  • oggetto_ripristinare rappresenta il file o la cartella che intendiamo recuperare
  • opzioni_recovery rappresentano le opzioni per il nostro recovery
  • $recovery è la variabile che conterrà lo stato dell’operazione

Vediamo, dunque, come valorizzare i due parametri del comando.

Identificazine dell’oggetto da recuperare

  • Recupero dei protection groups

$pg = Get-ProtectionGroup -DPMServer ServerName

dove ServerName è il nome del nostro server DPM

  • Seleziona i datasources per il protection group di interesse

$ds = Get-Datasource -ProtectionGroup $pg[x]

Dove x è l’indice, con base 0, del protection group di interesse

  • Elenco dei recovery point per il datasource selezionato

$rp = get-recoverypoint –datasource $ds[j]

Dove j è l’indice, con base 0, del protection group di interesse

  • Identificazione del folder o file da restorare

$gr = Get-RecoverableItem -BrowseType Child -RecoverableItem $rp[n]

Dove n è l’indice, con base 0, del protection group di interesse

Possiamo iterare il seguente comando fino a quando non identifichiamo il folder o la cartella di nostro interesse. Nel caso di output multilinea per il print di $gr, dovremmo identificare i vari indici di interesse a seconda del path di che dobbiamo seguire:

$gr = Get-RecoverableItem -BrowseType Child -RecoverableItem $gr

A questo punto l’oggetto da restorare sarà contenuto nella cartella $gr.

Impostazione delle opzioni di recovery

Potremmo eseguire il seguente comando per impostare le opzioni:

$rop = New-RecoveryOption -TargetServer ServerName -recoverylocation copytofolder -FileSystem -AlternateLocation path_del_recovery -recoverytype restore

A questo punto $rop conterrà le nostre opzioni.

Esecuzione del comando

A questo punto possiamo semplicemente eseguire il restore attraverso il seguente comando:

$recovery = Recover-RecoverableItem $gr –RecoveryOption $rop

Vediamo un esempio pratico, che ci consenta di capire quanto esposto fin’ora.

Supponiamo di avre un Protection Group “Business Documents” che protegge una share, che presenta la seguente struttura:
clip_image002

Il General Manager della nostra azienda ci ha chiamati dicendoci: “Non riesco ad accedere alla mia busta paga di Dicembre 2010 e ne voglio una copia sulla mia scrivania entro 30 min!”.

Sul server DPM, durante delle operazioni di maintenance, sono state cambiate delle permission e la console non parte per un mancato accesso al db.

A questo punto, sono già passati 5 min, e non avendo tempo di effettuare trobleshooting è giunta l’ora di sfruttare il recovery manuale:

Otteniamo i protection group presenti sul nostro server DPM chiamato SRV:

clip_image003

Abbiamo il solo Protection Group “Business Documents”. Per riferirlo non avremo dunque bisogno dell’indicizzazione.

Vediamo i datasource che contiene:

clip_image004

Il datasource è rappresentato dal volume c:\. Verifichiamo i Recovery Point disponibili:

clip_image005

Sono due e a noi interessa il più recente. Considerando che le liste sono in base 0, avremo:

clip_image006

All’interno di questa cartella, dovremo iterare fino a che non troveremo il file di nostro interesse:

clip_image007

Identificato il nostro file di interesse, contenuto in $gr[2], decidiamo di effettuare il recovery nella cartella C:\REC.

Impostiamo dunque le Recovery Options come segue:

$rop = New-RecoveryOption -TargetServer SRV -recoverylocation copytofolder -FileSystem -AlternateLocation C:\REC -recoverytype restore –OverwriteType overwrite

A questo punto non ci resta che eseguire il comando:

$recovery = Recover-RecoverableItem $gr –RecoveryOption $rop

Ed il gioco è fatto, in 5 min la busta paga del nostro GM è nuovamente disponibile sotto la cartella C:\REC ed a noi restano 20 min per andare a prendere un caffè. Smile

Mattia Tocco
Support Escalation Engineer
Microsoft Enterprise Platform Support