evgnbz
Goto Top

Powershell Script Datei Kopieren

Moin ich bin gerade dabei ein Powershell Script zusammen zu stellen und brauche sowas wie Fortschrittbalken und ggf weiter Verbesserungen um den Handling zu erleichtern
$from='woher'  
$into='wohin'  
$structure='sollzustand'  
$nas='serveraresse'  
for(;;) {
 
    if ($into=!$structure) #gibt es ein unterschied zw ist und sollzustand
    { 
        try {
 #datei wird kopiert
Copy-Item -Filter ZB *.pdf -Path $from  -Recurse -Destination $into
}
        catch {
#sonsten nichts (vorerst) 
echo "warnung"  
 
 }
        } 

    elseif {
	#bei erfolgreichen sicherung auf ordner wird auf netzwerk speicher kopiert
	    echo "daten werden auf den server übertragen"  
        try {
      #datei wird kopiert
                Copy-Item -Filter *.pdf -Path $from  -Recurse -Destination $nas
             } 
        catch {#sonsten nichts (vorerst) 
        echo "warnung"}  
}
}


Der sinn ist folgende der Ordner und die Dateien werden von x nach y kopiert und danach in den lokalen Netzwerk geschickt wo sie sich auf einen Nas gespeichert werden.
Brauche Feedback und Verbesserungsvorschläge
MfG
evgnbz

Content-ID: 4747791830

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

Ausgedruckt am: 22.11.2024 um 02:11 Uhr

SlainteMhath
SlainteMhath 24.11.2022 um 15:44:51 Uhr
Goto Top
Moin,

- für ist die for-schleife?
- Bist du sicher, dass du try...catch verstanden hast?

- Fortschrifts"balken":
1. per gci die vorhandenen Objekte zählen
2. nach jeder kopierten Datei Fortschritt berechnen und anzeigen

lg,
Slainte
evgnbz
evgnbz 24.11.2022 um 15:50:09 Uhr
Goto Top
- für ist die for-schleife?
soweit ichs verstanden habe kopiert Copy-Item nur eine Datei deswegen habe ich eine Dauerschleife erschaffen,
- Bist du sicher, dass du try...catch verstanden hast?//
ich dachte dass es sowas wie if else ist
Cloudrakete
Cloudrakete 24.11.2022 um 18:23:19 Uhr
Goto Top
https://www.powershellgallery.com/packages/Copy-ItemWithProgress/1.0/Con ...

15 Sekunden mit Google "progessbar file copy powershell" ...
Lösung im Link habe nicht getestet, kann sein, dass es nicht funktioniert.
Crusher79
Crusher79 25.11.2022 um 08:18:01 Uhr
Goto Top
Zitat von @evgnbz:

- für ist die for-schleife?
soweit ichs verstanden habe kopiert Copy-Item nur eine Datei deswegen habe ich eine Dauerschleife erschaffen,

Richtig, darum braucht man in jedem Fall eine for Schleife. Und das sehr, sehr oft. Bzw. sprechen wir bei PS ja von Objekten und man kann die Befehle ja hintereinander schreiben.

% -> ForEach-Object

Vlt. schon mal gesehen. gci xxxx | % ( .... )

Deine Schleife als Idee ist nicht verkehrt. Und sogar als Grundgedanke richtig. Aber man macht es sich damit zu schwer, arbeitet gegen PS.

Get-Alias <- gibt dir alle Kürzel wieder, die du auch hier bei den Kollegen im Forum immer wieder findest.

- Bist du sicher, dass du try...catch verstanden hast?
ich dachte dass es sowas wie if else ist

Vom Grundgedanken sowas ähnliches wie if-else.

https://www.windowspro.de/script/fehlerbehandlung-powershell-erroraction ...

Du kennst ja die netten roten Fehlermeldungen. Mitunter macht unser Script dann gar nichts mehr. Da wir nicht immer daneben stehen wollen kann man mit catch Fehlerbehandlung abbilden. Das Muster wie ein Fehler wiedergegeben wird ist immer gleich.

Bei if-else hast du ja eine genaue Vorstellung, was NORMAL passieren soll. Alles was AUSNAHMEN und FEHLER angeht betrifft "catch". Quasi ein generelles versagen.

Aber im Ansatz wie gesagt von dir nicht schlecht. Nur machst du dir das Leben damit unnötig schwer.
evgnbz
Lösung evgnbz 25.11.2022 aktualisiert um 09:09:36 Uhr
Goto Top
Danke für die ausführliche Erklärung,


Eigentlich war die Lösung vor meiner Nase und ich hab zu kompliziert gedacht
Grundfunktion sieht so aus :

$from='quelle'  
$into='zielordner auf system'  
$nas='zielordner in netzwerk'  

Copy-Item  -Path $from  -Destination $into -Recurse
Copy-Item  -Path $from  -Destination $nas -Recurse

Der Rest ist eigentlich überprüfen ob die Dateien schon da sind und sowas wie Versionsverlauf