ichwarsnicht0815
Goto Top

Powershell Dateien aus Verzeichnissen suchen und mit Klon syncroniesieren

Hallo,
ich weiß nicht so recht wie ich es lösen kann. Folgenden Situation:
In C:\ProgramData\ABC sind versch. Unterverzeichnisse. In einigen davon ist meine gesuchte Datei.
im Pfad \\Server\Verzeichnis gibt es die gleiche Unterverzeichnisstruckur ergänzt um weitere Versionsverzeichnisse.

Nun, das herausfinden welche Verzeichnisse die gesuchte Datei enthalten ist nicht schwer:
$Directory=“C:\ProgramData\ABC\”
$P=Get-ChildItem -recurse  $Directory | where name -like “gesuchte Datei” |ft
echo $p

das kommt dann bspw. :
  • C:\ProgramData\ABC\prog1\version1
  • C:\ProgramData\ABC\prog1\version1.2
  • C:\ProgramData\ABC\prog2\version3 etc.

Ich scheitere hieran:
Nun will ich entsprechend der Pfade die gesuchte Datei aus \\Server\Verzeichnis\prog1\version1 etc. nach C:\ProgramData\ABC\prog1\version1 kopieren.
Die Datei hat immer den gleichen Namen jedoch unterschiedlichem Inhalt.

Ich dachte mir iwi müßte der Ausgabe-Pfad um C:\ProgramData\ABC gekürzt werden damit ich den Rest nutzen kann um von \\Server\Verzeichnis zu kopieren.? Oder?

Vielen Dank

Content-Key: 608376

Url: https://administrator.de/contentid/608376

Printed on: April 24, 2024 at 18:04 o'clock

Mitglied: 145916
145916 Sep 28, 2020 updated at 16:51:49 (UTC)
Goto Top
$quelle = "\\Server\Verzeichnis"  
$ziel ="C:\ProgramData\ABC"  
ls $quelle -Recurse -File -Filter "gesuchteDatei" | %{  
    $newdir = $_.DirectoryName.replace($quelle,$ziel)
    if(!(Test-Path $newdir){md $newdir -Force}
    copy-item $_.Fullname -Destination $newdir -force -verbose
}
syncroniesieren
Don't drink and write!
Member: LeeX01
LeeX01 Sep 28, 2020 at 17:31:34 (UTC)
Goto Top
Servus,

je nachdem wie du das benutzt wäre vielleicht auch eine Software wie FreeFileSync was für dich wenn es kein PS sein muss. Lässt sich leicht konfigurieren was wohin synchronisiert werden soll.

Das „echo“ der PS ist übrigens Write-Host

Grüße
Member: ichwarsnicht0815
ichwarsnicht0815 Oct 05, 2020 at 09:56:19 (UTC)
Goto Top
Hallo eaglefinder,

Danke für Deine Inspiration.
Ich habe es mittlerweile so gelöst das ich die gleichnamigen Dateien in den jeweiligen Unterverzeichnissen editiere, da der Inhalt sehr ähnlich ist:
$dateien = $(Get-ChildItem  -recurse -Path C:\ProgramData\ABC\ -File -Filter gesuchteDatei)
foreach($datei in $dateien) {	
  ((Get-Content $datei.FullName) -replace "\\\\server\\verzeichnis1\\unterverzeichnis\\",  "\\server\verzeichnisNeu\") | Set-Content $datei.FullName   
}

Dieser Code durchsucht den Pfad: C:\PrgramData\ABC nach: gesuchteDatei und
ersetzt in ihr \\\\server\\verzeichnis1\\unterverzeichnis durch \server\verzeichnisNeu.

Funktioniert. face-smile