Not applicable
First published on TECHNET on May 02, 2007


02 / JAN, 2008 NOTE: NEW VERSION OF THIS SCRIPT AVAILABLE HERE

--------



'==========================================================================
'
'
' NAME: RestoreConflicted.VBS
'
'  AUTHOR: James Carr, EPS, Microsoft Corporation
'  AUTHOR: Ned Pyle, EPS, Microsoft Corporation
'
'
'  COMMENT: Disaster Recovery script for pulling DFSR data out of ConflictAndDeleted
'           and putting it back into a usable directory tree, preserving paths
'           names, and security descriptor info.
'
'  USAGE: Replace the 3 variables in the "operator edited" section below
'         with valid paths. The Script will copy the contents of the CandDFolder
'         to a specified path, returning files to original names and adding back
'         their folder structure at the time of deletion.
'
'         It is important to note that duplicate conflicts will not copy - check
'         the restoreconflicted.log to see which files need manual intervention
'         (this is done to prevent the accidental restore of an older conflicted copy)
'
'         Finally: this tool can only copy files that were preserved in ConflictAndDeleted
'         by quota (by default, 660MB). If the quota prevented all files from being saved
'         this script is not going to help for those that were trimmed out.
'
'  VERSION HISTORY:
'
'   1.01 / 09/25/06 -
'         Added support for whitespace in shelled XCOPY commands (thanks to sabinn, kapilme for catching)
'
'   1.00 / 08/25/06 -
'   First working version
'
'
' This script is provided "AS IS" with no warranties, and confers no rights.
' For more information please visit
' http://www.microsoft.com/info/cpyright.mspx to find terms of use.
'
'==========================================================================


Dim Source
Dim Dest
Const quote = """"

' Startup XML
Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False

' Set File Move Environment
Set objShell = WScript.CreateObject("WScript.Shell")





'=======================================================================
' Section must be operator-edited to provide valid paths
'=======================================================================

' Change path to specify location of C&D Manifest
objXMLDoc.load("C:replicatedfolderDfsrPrivateConflictAndDeletedManifest.xml")

' Change path to specify location of conflicted files
CandDFolder = ("C:replicatedfolderDfsrPrivateConflictAndDeleted")

' Change path to specify output folder
OutputFolder = ("c:dfsr_repair_tree")

'========================================================================





set objRootNodes = objXMLDoc.documentElement.ChildNodes

For Each objRootNode In objRootNodes

Set objChildNodes = objRootNode.ChildNodes
For Each objChildNode in objChildNodes

If objChildNode.nodeName = "Path" then
StrFullPath = objChildNode.firstChild.nodeValue
end if


If objChildNode.nodeName = "NewName" then

GuidName = objChildNode.firstChild.nodeValue

If GuidName <> "" then

Length = Len(StrFullPath)
StrExtract = Mid(strFullPath, 7, Length-6)

Source = CandDFolder & GuidName
Dest = OutputFolder & strExtract

wscript.echo "CMD /C XCOPY " & quote & Source & quote & " " & quote & Dest & quote & " " & "/Q /H /R /O"
objShell.Run "CMD /C ECHO F | XCOPY " & quote & Source & quote & " " & quote & Dest & quote & " " & "/Q /H /R /O /F >> restoreconflicted.log",0,TRUE


end if

end if

Next

Next