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

Ausgedruckt am: 29.03.2024 um 13:03 Uhr

Mitglied: 145916
145916 28.09.2020 aktualisiert um 18:51:49 Uhr
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!
Mitglied: LeeX01
LeeX01 28.09.2020 um 19:31:34 Uhr
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
Mitglied: ichwarsnicht0815
ichwarsnicht0815 05.10.2020 um 11:56:19 Uhr
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