<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1678611822423757&amp;ev=PageView&amp;noscript=1">
Defrag This

| Read. Reflect. Reboot.

Einsatz von geplanten Tasks zur Automatisierung von Datei-Transfers

Adam Bertram| February 05 2018

| security

automate-file-transfers-1024x512-1

 

Sie sollten nicht auf alle Ihre Dateiübertragungen aufpassen müssen wie auf kleine Kinder; mit geplanten Tasks können Sie diese Arbeit automatisieren.

Dateien von einem Ort zum anderen zu kopieren ist eine banale Aufgabe, ganz egal wie Sie es machen. Und man kann es auf viele verschiedene Arten machen: Ziehen und ablegen im Windows Explorer, Copy-Item mit PowerShell oder ein einfacher copy Befehl in DOS. Man muss nur eine Quelle und einen Zielpfad eingeben und bedarfsweise einige andere Parameter setzen. Erst wenn Sie häufig viele Dateien kopieren müssen, kommen Probleme auf.

Wenn Sie das Kopieren von Dateien automatisieren wollen, besonders in einer Windows-Umgebung, ist Windows PowerShell die ideale Skriptsprache. Wenn Sie schnell eine oder mehrere Dateien von einem Ort zum anderen kopieren müssen, bietet PowerShell sich dafür an. Sie können nicht nur manuell PowerShell-Skripte starten, sondern auch einfach Übertragungen via PowerShell-Skripte durch geplante Tasks in Windows anstoßen.

Automatisieren mit PowerShell. E-Book jetzt herunterladen >>

In diesem Artikel zeige ich, wie man mit einem Skript in PowerShell Datei-Transfers veranlassen kann und einen geplanten Task erstellen kann, der das Skript periodisch wiederkehrend ausführt. Die folgenden Tricks funktionieren nur mit PowerShell v4 und höher.

Related Article: Developing an HTTP Script Monitor in PowerShell

Erstellung des Skripts

Zuerst müssen Sie ein Skript erstellen, dass die Datei-Transfers ausführt. Wir werden es CopyFiles.ps1 nennen. Das Skript sieht so aus:

param(

[string]$SourcePath,

[string]$DestinationPath

)

Copy-Item –Path $SourcePath –Destination $DestinationPath -Recurse

Das Skript ist einfach, aber es läßt genügend Platz für individuelle Anpassungen an Ihre Umgebung.

Der komplizierteste Teil in dem Skript ist der param() Abschnitt. Dies ist ein Parameterblock, der zwei Parameter enthält: SourcePath und DestinationPath. Dadurch, dass diese beiden Werte sind, kann man verschiedene Werte in das Skript geben und es so weiterbenutzen. Wenn SourcePath and DestinationPath tatsächliche Pfade wären, müsste man für jede Dateikopierung eigene Skripte erstellen.

Automatisieren mit PowerShell. E-Book jetzt herunterladen >>

Wenn man das Skript manuell ausführt, sieht das ungefähr so aus:

& .\CopyFiles.ps1 –SourcePath C:\Source –DestinationPath \\SERVER\Destination

In diesem Beispiel werden all Dateien und Unterordner aus dem Ordner C:\Source zu dem freigegebenen Ordner \\SERVER\Destination kopiert.

Erstellung des geplanten Tasks

Nachdem Sie nun Ihr CopyFiles.ps1 PowerShell-Skript erstellt haben, gehen Sie zu dem Computer, von dem aus Sie es ausführen wollen. In diesem Beispiel werden wir einen geplanten Task erstellen, der dieses Skript täglich um 3 Uhr morgens ausführt.

Sie könnten den geplanten Task über die Task-Scheduler-Oberfläche erstellen, aber hier geht ja alles um Automation. Ich werde also zeigen, wie man den geplanten Task in PowerShell erstellt. Dafür müssen Sie vier grobe Schritte ausführen:

  1. Die geplante Task-Aktion erstellen

  2. Den Auslöser erstellen

  3. Den geplanten Task im Speicher erstellen

  4. Den geplanten Task auf dem Computer erstellen

So sieht das nun in der Praxis aus: Zuerst erstellt man die geplante Task-Aktion. Diese bestimmt, dass die EXE zusammen mit möglichen Argumenten läuft. In dem Beispiel gehe ich davon aus, dass Ihr Skript sich unter C:\CopyFiles.ps1 befindet.

$Action = New-ScheduledTaskAction -Execute 

'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe' -Argument "-NonInteractive -NoLogo

-NoProfile -File 'C:\CopyFiles.ps1' –SourcePath 'C:\Source –DestinationPath '\\SERVER\Destination'"

Als nächstes wird ein Auslöser erstellt, der das Skript täglich um 3 Uhr morgens laufen lässt.

$Trigger = New-ScheduledTaskTrigger -Daily -At '3AM'

Dann wird der geplante Task unter Benutzung der Aktion und des Auslösers, die wir gerade kreiert haben, im Speicher erstellt.

$Task = New-ScheduledTask -Action $Action -Trigger $Trigger -Settings (New-ScheduledTaskSettingsSet)

Zum Schluss erstelle ich den geplanten Task auf dem System - nenne ihn File Transfer Automation und lasse ihn unter dem lokalen Administrator-Konto mit dem entsprechenden Passwort laufen.

$Task | Register-ScheduledTask -TaskName 'File Transfer Automation' -User 'administrator' -Password 'supersecret'

Dadurch wird das Skript registriert, und es wird nun täglich um 3 Uhr morgens alle Dateien von der Quelle zum Zielpfad kopieren.

 

Topics: security

Leave a Reply

Your email address will not be published. Required fields are marked *

THIS POST WAS WRITTEN BY Adam Bertram

Adam Bertram is a 20-year veteran of IT. He’s currently an automation engineer, blogger, independent consultant, freelance writer, author, and trainer. Adam focuses on DevOps, system management, and automation technologies as well as various cloud platforms. He is a Microsoft Cloud and Datacenter Management MVP and efficiency nerd that enjoys teaching others a better way to leverage automation.

Free Trials

Getting started has never been easier. Download a trial today.

Download Free Trials

Contact Us

Let us know how we can help you. Focus on what matters. 

Send us a note

Subscribe to our Blog

Let’s stay in touch! Register to receive our blog updates.