Hilfe beim Copy Job via Powershell
Moin zusammen,
ich glaube ich stehe grade auf dem schlauch und brauch einmal einen ordentlich tritt da runter.
Wir haben bei uns einige selbstgeschriebene Programme im Einsatz. Wir nennen diese einfach mal P1 und P2. Beide Programme liegen in einem Ordner O, der sich wiederum unter c:\Program Files (x86) befindet, wobei P2 sich auch in einem Unterordner verstecken kann. Beide Programme haben jeweils eine ini-Datei und darüber hinaus werden DSP und MTF Dateien erzeugt. Das Programm ist speichert die Dateien (je nach Einstellung) irgendwo in einem Unterordner unter c:\Program Files (x86)\P1. Die Anwender sind angehalten die Ini-Dateien für Ihr Programm zu sichern und die DSP und MTF - Dateien auf dem dafür eingerichteten Netzlaufwerk zu speichern. Das funktioniert hervorragend.
Blödsinn. Das funktioniert überhaupt nicht. Bei Stichprobentests lag die Erfolgsquote bei den Ini Dateien bei etwa 4 %. Vom Rest spreche ich gar nicht erst. Also habe ich ein Skript erstellt, welches die Dateien nun wenigstens auf die Privaten P-Laufwerke sichert, damit sie im Worst-Case nicht weg sind. Das Skript soll beim An- oder Abmelden laufen (wann weiß ich noch nicht genau) und sieht wie folgt aus:
Vorweg:
1.
2.
3.
Die Sicherungen der beiden Ini-Dateien funktioniert gut, da es die Datei nur einmal gibt. Bei den verteilten DSP-Dateien sieht das Skript derzeit so aus:
Der dritte Schritt funktioniert nicht so wie ich mir das vorgestellt habe. Ich bekomme (egal wo die Datei liegt) nur einen Datei 20201130 erzeugt. Der Name, die Dateiendung und der Inhalt geht verloren. oder anders gesagt. Es wird eine Leere Datei erzeugt. Ich habe es grade einmal geprüft und auf der Test-Maschine (Kopie eines Produktivrechners) befinden sich in 25 Unterordnern ca. 200 Dateien mit der Dateiendung DSP unter 'C:\Program Files (x86)\P1. Eine einzige direkt darunter, alle anderen in Unterverzeichnissen, wobei hier zwischen 1 und 30 Dateien liegen. Auch diese sind teilweise wieder in weiteren Unterordnern, also C:\Program Files (x86)\P1\Firma1\Standort1\
Für mein Backup ist es nicht erforderlich, dass die Ordnerstruktur mit kopiert wird, wäre aber ein nice-to-have. Wichtiger ist, dass die Dateien dort liegen. Also Frage kurz formuliert:
Wie kann/muss der dritte Skriptblock aussehen, damit alle DSP-Dateien unabhängig von Ihrem Speicherort unter Beibehaltung des Namens und Ergänzung um das heutige Datum auf P:\P1-Backup kopiert werden?
Danke und Gruß
Doskias
ich glaube ich stehe grade auf dem schlauch und brauch einmal einen ordentlich tritt da runter.
Wir haben bei uns einige selbstgeschriebene Programme im Einsatz. Wir nennen diese einfach mal P1 und P2. Beide Programme liegen in einem Ordner O, der sich wiederum unter c:\Program Files (x86) befindet, wobei P2 sich auch in einem Unterordner verstecken kann. Beide Programme haben jeweils eine ini-Datei und darüber hinaus werden DSP und MTF Dateien erzeugt. Das Programm ist speichert die Dateien (je nach Einstellung) irgendwo in einem Unterordner unter c:\Program Files (x86)\P1. Die Anwender sind angehalten die Ini-Dateien für Ihr Programm zu sichern und die DSP und MTF - Dateien auf dem dafür eingerichteten Netzlaufwerk zu speichern. Das funktioniert hervorragend.
Blödsinn. Das funktioniert überhaupt nicht. Bei Stichprobentests lag die Erfolgsquote bei den Ini Dateien bei etwa 4 %. Vom Rest spreche ich gar nicht erst. Also habe ich ein Skript erstellt, welches die Dateien nun wenigstens auf die Privaten P-Laufwerke sichert, damit sie im Worst-Case nicht weg sind. Das Skript soll beim An- oder Abmelden laufen (wann weiß ich noch nicht genau) und sieht wie folgt aus:
Vorweg:
$date=get-date -Format yyyyMMdd
1.
$P1_ini=Get-ChildItem 'C:\Program Files (x86)\P1\*' -Include *.ini |? Name -like "*P1*"
copy-item $P1_ini P:\P1-Backup\P1.ini_$date
2.
$P2_Ini=Get-ChildItem 'C:\Program Files (x86)\P1\*' -Include *.ini -exclude "*alt*" -Recurse |? Name -like "*P2*"
copy-item $P2_ini P:\P1-Backup\P2.ini_$date
3.
Die Sicherungen der beiden Ini-Dateien funktioniert gut, da es die Datei nur einmal gibt. Bei den verteilten DSP-Dateien sieht das Skript derzeit so aus:
$DSP=Get-ChildItem 'C:\Program Files (x86)\P1\*' -Include *.dsp -Recurse
foreach ($Datei in $DSP)
{
copy-item $Datei P:\P1-Backup\$Datei_$date
}
Der dritte Schritt funktioniert nicht so wie ich mir das vorgestellt habe. Ich bekomme (egal wo die Datei liegt) nur einen Datei 20201130 erzeugt. Der Name, die Dateiendung und der Inhalt geht verloren. oder anders gesagt. Es wird eine Leere Datei erzeugt. Ich habe es grade einmal geprüft und auf der Test-Maschine (Kopie eines Produktivrechners) befinden sich in 25 Unterordnern ca. 200 Dateien mit der Dateiendung DSP unter 'C:\Program Files (x86)\P1. Eine einzige direkt darunter, alle anderen in Unterverzeichnissen, wobei hier zwischen 1 und 30 Dateien liegen. Auch diese sind teilweise wieder in weiteren Unterordnern, also C:\Program Files (x86)\P1\Firma1\Standort1\
Für mein Backup ist es nicht erforderlich, dass die Ordnerstruktur mit kopiert wird, wäre aber ein nice-to-have. Wichtiger ist, dass die Dateien dort liegen. Also Frage kurz formuliert:
Wie kann/muss der dritte Skriptblock aussehen, damit alle DSP-Dateien unabhängig von Ihrem Speicherort unter Beibehaltung des Namens und Ergänzung um das heutige Datum auf P:\P1-Backup kopiert werden?
Danke und Gruß
Doskias
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 627095
Url: https://administrator.de/contentid/627095
Ausgedruckt am: 23.11.2024 um 09:11 Uhr
4 Kommentare
Neuester Kommentar