Windows - Dateiversionsverlauf wiederherstellen

 

Das hier vorgestellte Powershell-Skript kopiert die neuesten Dateien des Dateiversionsverlauf in einen beliebigen Ordner oder auf einen anderen Computer. In der Kopie wird dabei das Datum aus dem Dateinamen entfernt und somit die urspr√ľnglichen Dateinamen wiederhergestellt.

Der Dateiversionsverlauf kann auf dem Computer, auf dem der Dateiversionsverlauf aktiviert und konfiguriert ist, mittels Windows GUI verwaltet werden.

Nähere Informationen zum Dateiversionsverlauf: www.libe.net Windows-Dateiversionsverlauf

 

Die Daten sind vollständig im Dateisystem des Backupdatenträgers vorhanden, allerdings, wie eingangs schon erwähnt, mit einem Datum versehen:

 

Damit es einfach möglich ist, die Ordner und Files vom Datum zu befreien, habe ich ein kleines Skript geschrieben, welches die Dateien in einen beliebigen Ordner kopiert und das Datum dabei ignoriert.

Das folgende Skript ist eine sehr einfache Implementierung, es √ľberschreibt die Dateien im Ziel, wenn mehrere Versionen existieren. Da die Funktion gci (Get-ChildItem) die Daten, zumindest in meinen Tests, nach Datum sortiert aufruft, sollte die neueste Dateiversion im Zielordner landen.

Beim Start des Skripts kann ein beliebiger Unterordner des FileHistory Ordners ausgewählt werden:

Im nächsten Dialog das Restoreziel:

 

im Anschluß kopiert Powershell alle Daten vom Backup Ordner (FileHistory) in den Restoreordner

Quellcode 

function Read-FolderBrowserDialog([string]$Message, [string]$InitialDirectory, [switch]$NoNewFolderButton){
    $browseForFolderOptions = 0
    if ($NoNewFolderButton) { 
        $browseForFolderOptions += 512 
    }

    $app = New-Object -ComObject Shell.Application
    $folder = $app.BrowseForFolder(0, $Message, $browseForFolderOptions, $InitialDirectory)
    if ($folder) { 
    $selectedDirectory = $folder.Self.Path } else { $selectedDirectory = '' 
    }
    [System.Runtime.Interopservices.Marshal]::ReleaseComObject($app) > $null
    return $selectedDirectory
}
#select Backup Folder
do{
    $filehistorypath = Read-FolderBrowserDialog -Message "please select History Folder: FileHistory\Username\Computername\Data\Drive ..." -NoNewFolderButton
    if (![string]::IsNullOrEmpty($filehistorypath)) { 
        Write-Host "You selected the directory: $filehistorypath" 
    } else { 
        "You did not select a directory." 
    }
    if ($filehistorypath.contains('\Data\C')) {
        echo 'Path contains: \Data\C'
    } else {
        echo 'Path does not contain: \Data\C'}
} until ($filehistorypath.contains('\Data\C'))
#Select Restore Folder
$restorepath=Read-FolderBrowserDialog -Message "please select a Restore Path" -NoNewFolderButton
if (![string]::IsNullOrEmpty($restorepath)) { 
    Write-Host "You selected the directory: $restorepath" 
} else {
    [Environment]::Exit(1) 
}

$Files=gci -Path $filehistorypath -Force -Recurse
for($i = 0; $i -lt $Files.Count; $i++){
    $restorepath1= $Files[$i].FullName -Split '\\Data\\C'
    $restorepath2= $restorepath1[1] -Split ' \(20'
    echo ($restorepath2[1] + " --> " +$restorepath2[0])
    $targetpath=split-path ($restorepath + $restorepath2[0] + $Files[$i].Extension)
    if (!(Test-Path $targetpath)) {
        mkdir $targetpath
    }
    Copy-Item ($Files[$i].FullName) ($restorepath + $restorepath2[0] + $Files[$i].Extension) -force 
}

Download: FileHistory.ps1

 

Den Quellcode einfach in eine .ps1 Datei kopieren und mittels Powershell starten:

 

Eventuell muss dazu vorher die Execution Policy angepasst werden, siehe:

wie erstelle ich ein PowerShell Skript 

  

Die Funktion Read-FolderBrowserDialog stammt von dieser Seite: http://blog.danskingdom.com

 

 

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE f√ľr deine Bewertung!

Aktualisiert: 04.07.2016 von Bernhard | Translation English |ūüĒĒ | Kommentare:0

‚ě® Ping Netzwerkverbindung √ľberwachen | ‚ě¶ PowerShell Beispiele | eine bestimmte Datei auf √Ąnderung √ľberwachen ‚ě®

Top-Artikel in diesem Bereich


PowerShell: Dateiattribute: Datum ändern - ganz ohne Tools

Als Alternative zu speziellen Programmen kann auch mit PowerShell das Datum einer Datei oder eines Ordners geändert werden. 


PowerShell: Bildschirmschoner verhindern: Maus regelmäßig bewegen

Wer die Einstellungen f√ľr die Bildschirmsperre nicht √§ndern kann, kann alternativ regelm√§√üig die Maus bewegen, oder die Maus von einem Script bewegen lassen. Urspr√ľnglich als AutoIt-Script ver√∂ffentlicht, habe ich das Script mit ein paar PowerShell-Zeilen nachgebaut. Wer die folgenden Befehle in eine PowerShell-Sitzung kopiert, verhindert, dass sich der Computer sperrt:


AD: Active Directory Daten auslesen

Mit Windows PowerShell Active Directory Objekte auslesen.

Fragen / Kommentare