cmd-Datei umschreiben für Sicherung und Herstellung Profilordner

  • Batch ist schlichtweg ein Relikt, und kann schon lange nicht mehr alles, was man für Windows zB per Powershell könnte. Dafür kann Powershell auch Befehle von DOS ausführen, nur wird das anders umgesetzt meine ich, es gibt keine aktive Eingabeaufforderung falls überhaupt. Es ist eines, wenn Microsoft den Rummel mitschleppt, es ist was ganz anders, es auch nutzen zu wollen. Und wie gesagt, die Geschwindigkeit ist unterirdisch. Was ich selbst noch aktiv nutze ich NET oder MKLINK, seltener noch deltree, wobei das Original nur 32-Bit kann, es gibt aber auch eine freie Variante eines Hobby-Programmierers für 64-Bit (nativ natürlich).

    Grob umrissen, wenn auch vielleicht schon zu speziell

    PowerShell Befehle Überblick und Beispiele | LINETWORK
    Erfahren Sie, was PowerShell Befehle sind und wie Sie diese nutzen. Lernen Sie neue PowerShell Module wie z.B. Active Directory zu importieren.
    www.linetwork.de

    SMB erkennen und schalten, kann die Eingabeaufforderung nicht

    Erkennen, Aktivieren und Deaktivieren von SMBv1, SMBv2 und SMBv3 unter Windows
    Beschreibt, wie das Server Message Block-Protokoll (SMBv1, SMBv2 und SMBv3) in Windows-Client- und -Serverumgebungen aktiviert und deaktiviert wird.
    learn.microsoft.com

    .NET gar nicht in der Eingabeaufforderung

    CMD-Befehle in PowerShell über Aliase und Funktionen verwenden | WindowsPro

    Manches kann auch nicht mehr so wie in DOS umgesetzt werden.

    Diverse Scripte und Programme laufen hier nativ, es ist zum einen erheblich mehr und vor allem einfacher zu machen, und auch wesentlich schneller. Deswegen auch der Verweis auf zB FreeFileSync, dass zum einen flexibel programmiert werden kann, aber die Umsetzung dann wieder mit reinem Maschinencode ausgeführt wird, plus Prüfung etc. Muss man einfach mal gesehen haben.

    Wir sind keine Beschwerdestelle, hier gibt es nur Lösungen! Meine Glückszahl hier: 93.

  • Das bezog sich auf die Ausführung von DOS-Befehlen in PS, als dass ein neues, nicht sichtbares Fenster ausgeführt wird, nicht auf die Eingabe in PS selbst. Nachfragen hätte nicht geschadet.

    Wir sind keine Beschwerdestelle, hier gibt es nur Lösungen! Meine Glückszahl hier: 93.

  • als Backup? Wo denn?

    Ich weiß ja was Du meinst, also lassen wir das ruhen. ;)

    .DeJaVu

    Nun hast Du mir ständig mit der Rute gedroht, und ich war so stolz auf mich, dass mir das als "Freizeitsportler" gelungen ist.

    Aber gut, ich habe volles Verständnis dafür, was soll man sich mit "altem" Kram beschäftigen.

    Schön wäre es aber trotzdem gewesen, wenn Du als Profi mir über PowerShell einen Weg gezeigt hättest (Beispiel).

    Nun habe ich es wieder versucht, und bin auch damit zufrieden, erwarte nun von Dir eine kritische Betrachtung dazu. Ist das so i.O.?

    sichern.ps1

    Code
    Remove-Item -Path B:\Backup-Firefox\FinaleTest\ehrfnvh7.Test -Recurse
    Copy-Item -Path C:\Users\Oldi\AppData\Roaming\Mozilla\Firefox\Profiles\ehrfnvh7.Test -Destination B:\Backup-Firefox\FinaleTest -Recurse

    restore.ps1

    Code
    Remove-Item -Path C:\Users\Oldi\AppData\Roaming\Mozilla\Firefox\Profiles\ehrfnvh7.Test -Recurse
    Copy-Item -Path B:\Backup-Firefox\FinaleTest\ehrfnvh7.Test -Destination C:\Users\Oldi\AppData\Roaming\Mozilla\Firefox\Profiles -Recurse

    Grüße vom FuchsFan

  • Wegen der fehlenden Beispiele - ich nutze Powershell so gut wie gar nicht. SMB ist nur eines der ganz wenigen und das auch nur per copy&paste damals, uräschlich war was ganz anderes. Und Batch auch nur wie beschrieben. Zudem nutze ich für meine Bequemlichkeit und anderes eigene kleine Programme, die ich oben ja schon erwähnt hatte. Powershell ist mächtig, aber mit meinen "Anforderungen" nicht wirklich kompatibel (wir reden über 1000 Zeilen und mehr /strukturiereten/ Code), dafür kann man PS-Scripte aber wunderbar weitergeben.

    erwarte nun von Dir

    Darfst du - ob du was bekommst... ;) Wenn deine Scripte funktionieren, weil du dich eingearbeitet hast, dann finde ich das gut. Einfach den Anfang finden :thumbup:

    Wir sind keine Beschwerdestelle, hier gibt es nur Lösungen! Meine Glückszahl hier: 93.

  • Ich hatte ja angekündigt, eine weitere Möglichkeit der Sicherung des Profilordners zu erläutern, sowie auch eine Möglichkeit zu schaffen, diesen unkompliziert wieder zu restaurieren.

    Ich möchte keine Diskusion erwarten über Sinn oder Unsinn dieser Methode, es stellt nur eine weitere voll funktionsfähige Lösung für mich dar, die ich nicht mehr entbehren möchte.

    Verbesserungsvorschläge hierzu sind jederzeit willkommen.

    Alles wird über zwei PowerShell-Scripte absolviert (Endung .ps1), einmal für Sicherung, und einmal für Restauration. Es gibt bei mir auf Laufwerk E: einen Ordner BackupFirefox, mit Unterordnern für jede genutzte Version von Firefox (z.B. ArbeitsFox, beta1, Nightly1, usw.).

    In jeden dieser Unterordner kommen beide Scripte eingefügt. Das Wichtigste kommt aber dann, weil vorab in den Scripten immer die passenden Pfade für die jeweilige Version eingetragen werden müssen. Das sollte nicht auf die leichte Schulter genommen werden, sonst kann es passieren, dass ein Profil ganz verschwunden ist.

    Deshalb meine Empfehlung, dass vor Beginn des Testens der Profilordner manuell gesichert werden sollte. Später, wenn alles zufrieden läuft, kann jeder für sich entscheiden, was er/sie für richtig hält.

    Für die installierten Versionen kann in der Adresszeile about:support eingegeben werden, dort ist dann ganz einfach der genaue Pfad zum Profilordner zu entnehmen.

    Ich werde ein Beispiel für die installierte Version, und ein Beispiel für portable Versionen vorstellen, ist dann eventuell einfacher zu erkennen.

    Schaut im ersten Moment nach viel Arbeit aus, wird aber doch nur einmal für jede Version erforderlich sein. Wegen der Pfade sollte alles in Ruhe und überlegt gemacht werden, dann wird es auch funktionieren. Der Gebrauch erfolgt natürlich auf eigene Gefahr.

    Wie arbeiten jetzt die Scripte?

    Gestartet werden sie mit rechter Maus, im Kontext "Mit PowerShell ausführen" auswählen (gibt noch andere Möglichkeiten), und die Arbeit beginnt.

    Zuerst wird geprüft, ob im angegebenen Verzeichnis der benannte Profilordner vorhanden ist, ist er das, so wird er im zweiten Schritt gelöscht.

    Dann wird der zu sichernde Profilordner kopiert, und wieder in das Sicherungs-Verzeichnis eingefügt. Zusätzlich wird eine Text-Datei geschrieben, mit dem Zeitpunkt der Sicherung.

    Hinweis: Arbeite ich nur mit dem Script, dann habe ich immer die aktuelle Version zur Auswahl. Ich handhabe das so, wenn ein Profil erhalten werden soll, lasse ich es als Zip-Archiv komprimieren (rechte Maus/Senden an/Zipkomprimierter Ordner). Das bleibt dann zusätzlich im Sicherungs-Ordner erhalten. Wenn es mehrere sein sollen, so ändere ich den Namen des Archivs als Datum.

    Die Restaurierung erfolgt auch so, Prüfen, Löschen, zurück kopieren des Profils.

    Das ist z.B. der Inhalt des Verzeichnisses "Test" (installierte Version) im Ordner BackupFirefox:

    Script zur Sicherung (installierte Version):

    Script zur Sicherung (portable Version)

    Script restore (installierte Version):

    Script restore (portable Version):

    Gutes Gelingen! :)

    Grüße vom FuchsFan

  • Geht es nicht auch mit %appdata%?

    Das müsste wohl auch funktionieren, denke ich, habe es aber nicht ausprobiert.

    Wie ich ja beschrieben habe, suche ich bei installierten Versionen immer den Pfad über about:support, kopiere den einfach und füge ihn ein.

    Edit:

    Funktioniert nicht, Script gibt Error aus.

    Grüße vom FuchsFan

  • Jetzt habe ich es!

    Original aus Deinem Script

    Code
    Copy-Item -Path "C:\Users\baldm\AppData\Roaming\Mozilla\Firefox\Profiles\ehrfnvh7.Test" -Destination "E:\BackupFirefox\Test\ehrfnvh7.Test" -Recurse

    ändern in

    Code
    Copy-Item -Path "$env:appdata\Mozilla\Firefox\Profiles\ehrfnvh7.Test" -Destination "E:\BackupFirefox\Test\ehrfnvh7.Test" -Recurse

    Mit <3lichem Gruß

    Mira

  • Habe noch etwas gebastelt.

    $date = Get-Date -Format "dd.MM.yyyy" z.B. in Zeile 1 einfügen.

    dann in Zeile 33

    $Logfile = (New-Item ("$LogPfad\$Datum" + "Sicherung am.txt") -ItemType File -Force).FullName

    in

    $Logfile = (New-Item ("$LogPfad\$Datum" + "Sicherung am $date.txt") -ItemType File -Force).FullName

    ändern.

    Das Ergebnis ist, dass anstatt eine Datei Sicherung am.txt

    eine z.B. Sicherung am 14.01.2023.txt erzeugt wird.

    Mit <3lichem Gruß

    Mira

  • Eine weitere kleine Spielerei!

    Code
    New-Item -Path "E:\BackupFirefox\$date" -ItemType Directory
        Compress-Archive -Path "$env:appdata\Mozilla\Firefox\Profiles\ehrfnvh7.Test" -DestinationPath "E:\BackupFirefox\$date\ehrfnvh7.Test.zip"

    Ich habe zwar herausgefunden, wie der laufende Prozess beendet wird,

    aber mit dem Prüfen, bzw if... else komme ich noch nicht so zurecht.

    Auch wäre es ja klasse, wenn der Firefox dann neu gestartet wird,

    bzw. eine Abfrage, ob er es denn soll.

    Mit <3lichem Gruß

    Mira

  • Besser: abfragen, ob Firefox noch läuft und solange warten oder abbrechen.

    Das ist nämlich einer der gravierenden Fehler in Firesave.

    ehrfnvh7.Test

    Wer denkt sich solche Profilnamen aus?

    Warum nicht nur "Test"?

    Steht eh alles in der profiles.ini, jede Malware kann das inzwischen auslesen, da sind die anderen Zeichen davor komplett pillepalle.

    PS kann auch INI auslesen.

    PowerShell to Read single value from simple .ini file
    Everything I've found looks way over complex. It's almost like I just need to read a text file. ADAP.ini contains this, nothing else: http://xxx.104.xxx.226…
    stackoverflow.com

    Ist mit höheren Sprachen aber noch einfacher umzusetzen.

    Wir sind keine Beschwerdestelle, hier gibt es nur Lösungen! Meine Glückszahl hier: 93.

    Einmal editiert, zuletzt von .DeJaVu (15. Januar 2023 um 07:53)