2013-07-11 12 views
29

Sono in procinto di scrivere uno script PowerShell per il backup di un computer Windows utilizzando rsync. A tal fine, sto tentando di utilizzare WMI da detto script per creare una copia Shadow non persistente con la partecipazione degli scrittori (come è apparentemente consigliato per i backup).Creazione di una copia shadow utilizzando il contesto "Backup" in un PowerShell

Ho trovato da un'altra domanda (Accessing Volume Shadow Copy (VSS) Snapshots from powershell) un modo per creare una copia shadow in generale, ma l'esempio qui riportato utilizza "ClientAccessible" come parametro di contesto, che determina la creazione di una copia shadow persistente, senza scrittore partecipazione.

Durante la ricerca di una soluzione, ho trovato che ho potuto utilizzare il seguente comando per ottenere un elenco di contesti, che presumo sono capiti da WMI:

Get-WmiObject win32_shadowcontext | Out-GridView 

Essa lista hanno un contesto denominato " Backup ", che è convenientemente quello che voglio. Ho provveduto a tentare la creazione di una copia shadow non persistente utilizzando quel contesto:

$shadow = (Get-WmiObject -list win32_shadowcopy).Create("C:\", "Backup") 

Tuttavia, questo sembra fallire e il contenuto del $ ombra variabile è impostato su

ReturnValue  : 5 
ShadowID   : {00000000-0000-0000-0000-000000000000} 

Secondo la relativa documentazione (Create method of the Win32_ShadowCopy class), il valore restituito significa "Contesto copia shadow non supportato".

Non sono riuscito a trovare alcuna documentazione pertinente sul motivo per cui questo contesto non è supportato o se è possibile utilizzarlo del tutto. Ho anche provato i contesti "FileShareBackup" e "AppRollback" senza successo.

Presumo che manchi o qualcosa di ovvio, o che per qualche motivo, WMI non supporta nient'altro che "clientAccessible" durante la creazione di copie shadow, o che questo dipende dal sistema operativo (sto testando questo su Windows 7 , 64-bit)

Come posso farlo funzionare?

+2

Ho appena scritto la stessa cosa (ma era con C# e la libreria AlphaVSS), ecco cosa ho imparato: sarà necessario montare l'istantanea per ottenere i file da sincronizzare, ma per essere montabile uno snapshot deve avere il flag 'NoAutoRelease' impostato su' true'. Inoltre per avere 'NoAutoRelease' impostato su true devi avere' Persistent' impostato su 'true', quindi solo un file fyi in modo da non passare troppo tempo a cercare di ottenere qualcosa di diverso da' ClientAccessable' per funzionare ('ClientAccessable' ha entrambe le variabili sono impostate su 'true') –

+0

Le copie shadow create con NoAutoRelease impostate su False vengono rimosse automaticamente una volta che il processo che le richiede termina ([collegamento] (http://msdn.microsoft.com/en-us/library/windows/desktop /aa394427(v=vs.85).aspx)). Inizialmente sospettavo che quello fosse il problema che stavo vedendo, ma il fatto che abbia lo stesso problema con il contesto di AppRollback suggerisce che potrebbe non essere il caso. Ma in generale è possibile montare copie shadow a rilascio automatico come descritto in [link] (http://www.goodjobsucking.com/?p=62). Tuttavia, preferirei usare powershell piuttosto che la soluzione proposta lì. –

+2

Se non riesci a far funzionare WMI, prova a caricare l'assembly [AlphaVSS] (http://alphavss.codeplex.com/) in Powershell. [Ecco come creare un'istantanea, montarla ed eliminarla in C#] (http://pastebin.com/XhVLyq0m), dovresti essere in grado di tradurla in powershell. –

risposta

1

Il tuo $ shadow ha un valore 5 sul valore restituito guardando il messaggio di errore, il tuo ID ombra ha tutti zeri, dovrai aggiungere un 1 o un 2 alla fine della copia shadow del volume nel registro usando binario o dword ..

trovare la cartella nel registro denominata volsnap nella ricerca regedit .volsnap.sys si trova nella directory C: \ Windows \ System32 \ drivers. La dimensione del file è 52.352 byte. Il file volsnap contiene la firma digitale di Microsoft. Assicurati che siano i byte corretti.

Ciò conferma la sua autenticità. volsnap.sys sembra un file che è stato compresso da un EXE-Packer. Questa tecnica viene spesso utilizzata dai trojan per mantenere le dimensioni del file ridotte e ostacolare anche gli sforzi di debug.

Tuttavia, questo di per sé non è un motivo sufficiente per presumere intenzioni malevole, poiché anche i produttori di software professionali ben intenzionati sfruttano i file compressi. Per questo motivo, il 2% di tutti gli esperti considera questo file come una possibile minaccia. La probabilità che possa causare danni è alta. Si prega di considerare i commenti aggiuntivi di altri utenti.

ombra ID predefinito 00000000-0000-0000-0000-000000000000 00000000-0000-0000-0000-000000000005

se è già un 5 che probabilmente doesnt cambiarlo a 1

o creare nuovo codice

ombra id $ ombra 00000000-0000-0000-0000-0000000000001

non esattamente come shown.you potrebbe essere necessario provare differente formulazione non sono sicuro se sarà $ w ork. se non provi la versione standalone di js.

Problemi correlati