Hilfe bei einfachem Powershell Copy-Script
Halo zusammen,
ich habe leider keine Powershell Erfahrung, brauche aber nun ein Script, welches ich per Taskplaner 1x/Monat ausführen will
Es soll folgendes passieren:
Ich möchte 1x/Monat Zip Dateien vom Backupserver auf eine SMB Freigabe kopieren und will dort 2 Versionen aufheben.
Die Idee:
Abfrage des aktuellen Monats
Erstellen des Ordners auf der Freigabe ("03" für März, "04" für April usw.)
Kopieren der Quelldateien in den aktuellen Zielordner
Wenn erfolgreich, löschen des Ordners abzüglich 2 Monate (im aktuellen Fall dann eben "01")
Kann man mir dabei wohl bitte helfen?
Ich habe mir schon ein wenig heraus gesucht:
mit get-date month kriege ich das Datum des Monats
mit New-Item -Path $filepath -ItemType Directory erstelle ich das Verzeichnis
mit copy-item starte ich den Kopiervorgang
...aber ab hier endet es dann mit meinem Wissen, insbesondere die Logik muss ja gebaut werden
Musste mich damit halt noch nicht beschäftigen.
Hat jemand Zeit, Lust und Interesse mir dabei zu helfen, bitte?
ich habe leider keine Powershell Erfahrung, brauche aber nun ein Script, welches ich per Taskplaner 1x/Monat ausführen will
Es soll folgendes passieren:
Ich möchte 1x/Monat Zip Dateien vom Backupserver auf eine SMB Freigabe kopieren und will dort 2 Versionen aufheben.
Die Idee:
Abfrage des aktuellen Monats
Erstellen des Ordners auf der Freigabe ("03" für März, "04" für April usw.)
Kopieren der Quelldateien in den aktuellen Zielordner
Wenn erfolgreich, löschen des Ordners abzüglich 2 Monate (im aktuellen Fall dann eben "01")
Kann man mir dabei wohl bitte helfen?
Ich habe mir schon ein wenig heraus gesucht:
mit get-date month kriege ich das Datum des Monats
mit New-Item -Path $filepath -ItemType Directory erstelle ich das Verzeichnis
mit copy-item starte ich den Kopiervorgang
...aber ab hier endet es dann mit meinem Wissen, insbesondere die Logik muss ja gebaut werden
Musste mich damit halt noch nicht beschäftigen.
Hat jemand Zeit, Lust und Interesse mir dabei zu helfen, bitte?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 331678
Url: https://administrator.de/contentid/331678
Ausgedruckt am: 19.11.2024 um 17:11 Uhr
8 Kommentare
Neuester Kommentar
Sodele...
Und tschüss
Gruß schnappi
$monthfolder = "\\Server\Freigabe\$(get-date -F 'MM')"
if (!(Test-path $monthfolder)) {md $monthfolder}
copy-item "E:\Daten\*.zip" -Destination $monthfolder
gci "\\Server\Freigabe" | ?{$_.PSIsContainer} | sort CreationTime -Desc | select -skip 2 | remove-item -Recurse -Force
Gruß schnappi
gci steht wohl für get-childItem > Fragt also den Inhalt der Freigabe ab
JaAber wofür steht ?{$_.PSIsContainer} ?
Prüft ob es sich um einen Ordner handelt, denn gci liefert Dateien und Ordner. Das stellt sicher das nur Ordner genommen werden, das ?{} ist eine Abkürzung für das Where-Object.Dann wird wohl mit sort CreationTime -Desc sortiert, nach Erstellungsdatum in absteigender Reihenfolge
Ja.slect -skip 2 wird hier dann schlicht um 2 Objekte in der absteigendne Reihenfolge vorgegangen und dann gewählt?
Hier werden die zwei obersten Ordner der sortierten Pipeline übersprungen (die neuesten) und der Rest dann gelöscht.
Nur noch zur Info, das
?{$_.PSIsContainer}
brauchst du nur wenn du noch mit Powershell 2.0 arbeitest, ab 3.0 kannst du die Parameter -File oder in diesem Fall -Directory von get-ChildItem verwenden um das selbe zu erreichen.
Ja, absolut. Ich schreibe nur gerne Skripte die überall laufen gerade wenn man das in Foren postet wo unwissende oft nur kopieren.