Viele Abläufe in der IT wie auch im Büroumfeld wiederholen sich regelmäßig. Doch sind solche repetitiven Aufgaben nicht nur eintönig, sondern auch fehleranfällig. Hier kommen Automatisierungswerkzeuge wie Power Automate Desktop ins Spiel. Die Software erlaubt es, Abläufe in Form von Flows zu erstellen und dann bei Bedarf zu starten. Durch das zugrundeliegende Scripting gibt sich die Umgebung flexibel, erfordert jedoch auch eine gewisse Einarbeitung. Wie zeigen, wie Sie mit Power Automate Desktops die ersten Schritte unternehmen.
Wenn die IT von Digitalisierung spricht, beschäftigt sie sich häufig mit den Werkzeugen, Anwendungen und der Infrastruktur, die darauf aufbauende Geschäftsprozesse unterstützen. Nicht immer stehen die eigentlichen Prozesse und die Mitarbeiter, die diese anstoßen, im Vordergrund. So bleiben Tätigkeiten verborgen, die zeitraubend, repetitiv und fehleranfällig sind. Power Automate aus der Power Platform ist eine mögliche Antwort, die Microsoft ins Rennen schickt, um Mitarbeitern selbst Automationsmöglichkeiten an die Hand zu geben. Wie so oft gibt es mehrere Geschmacksrichtungen: Die erste, cloudgestützte, möchte Daten, Systeme, Protokolle und Interaktionen von, für und mit der Cloud lösen – und ist daher, weil in der Cloud betrieben, die wohl versatilere.
Für die Automatisierung auf dem Desktop, um lokale Daten, Anwendungen auf dem PC und Bürotätigkeiten zu orchestrieren, laden Mitarbeiter "Power Automate Desktop" aus dem Microsoft Store herunter. Diese Variante konzentriert sich auf Daten, Interaktionen und Anwendungen, die auf dem Rechner laufen und im Rahmen der Digitalisierung besondere Aufmerksamkeit benötigen. Ein Schwerpunkt, neben vordefinierten Aktionen wie "Lies Text aus einer PDF-Datei", "Schreib eine E-Mail" oder "Starte ein bestimmtes Programm" und Klassikern für Schleifen und Wenn-Dann-Verzweigungen, sind die Recorder für Web und Desktop, die Benutzerschritte aufzeichnen und beliebig oft wiederholen lassen.
Power Automate Desktop einrichten
Für Power Automate Desktop müssen Sie mindestens Windows 10 verwenden. Die Home-Version verfügt über die meisten Funktionen, wobei der Recorder und einige Cloudfunktionen nur in Enterprise, Pro und auf Windows Server im Fall einer Remote-Desktop-Nutzung existieren. Sie müssen außerdem einen Account in der Microsoft-Welt besitzen: Im Unternehmenskontext ist das ihr Konto für die Microsoft-Cloud, zu Hause können Sie mit dem Microsoft-Account, den Sie auch für Outlook und Xbox nutzen, automatisieren. Alle Voraussetzungen und Versionsunterschiede finden Sie unter [1].
Wenn die IT von Digitalisierung spricht, beschäftigt sie sich häufig mit den Werkzeugen, Anwendungen und der Infrastruktur, die darauf aufbauende Geschäftsprozesse unterstützen. Nicht immer stehen die eigentlichen Prozesse und die Mitarbeiter, die diese anstoßen, im Vordergrund. So bleiben Tätigkeiten verborgen, die zeitraubend, repetitiv und fehleranfällig sind. Power Automate aus der Power Platform ist eine mögliche Antwort, die Microsoft ins Rennen schickt, um Mitarbeitern selbst Automationsmöglichkeiten an die Hand zu geben. Wie so oft gibt es mehrere Geschmacksrichtungen: Die erste, cloudgestützte, möchte Daten, Systeme, Protokolle und Interaktionen von, für und mit der Cloud lösen – und ist daher, weil in der Cloud betrieben, die wohl versatilere.
Für die Automatisierung auf dem Desktop, um lokale Daten, Anwendungen auf dem PC und Bürotätigkeiten zu orchestrieren, laden Mitarbeiter "Power Automate Desktop" aus dem Microsoft Store herunter. Diese Variante konzentriert sich auf Daten, Interaktionen und Anwendungen, die auf dem Rechner laufen und im Rahmen der Digitalisierung besondere Aufmerksamkeit benötigen. Ein Schwerpunkt, neben vordefinierten Aktionen wie "Lies Text aus einer PDF-Datei", "Schreib eine E-Mail" oder "Starte ein bestimmtes Programm" und Klassikern für Schleifen und Wenn-Dann-Verzweigungen, sind die Recorder für Web und Desktop, die Benutzerschritte aufzeichnen und beliebig oft wiederholen lassen.
Power Automate Desktop einrichten
Für Power Automate Desktop müssen Sie mindestens Windows 10 verwenden. Die Home-Version verfügt über die meisten Funktionen, wobei der Recorder und einige Cloudfunktionen nur in Enterprise, Pro und auf Windows Server im Fall einer Remote-Desktop-Nutzung existieren. Sie müssen außerdem einen Account in der Microsoft-Welt besitzen: Im Unternehmenskontext ist das ihr Konto für die Microsoft-Cloud, zu Hause können Sie mit dem Microsoft-Account, den Sie auch für Outlook und Xbox nutzen, automatisieren. Alle Voraussetzungen und Versionsunterschiede finden Sie unter [1].
Beispiel 1: Dateien löschen
Nachdem Sie Power Automate Desktop auf Ihren Windows-10-PC aus dem Microsoft Store oder von der Webseite unter [2] heruntergeladen haben, werden Sie gebeten, sich mit Ihrem Microsoft-Account oder Arbeitskonto aus der Microsoft-Cloud anzumelden. Sie erhalten dann eine Übersicht zu bereits bestehenden Automatisierungen. Mit einem Klick auf "+ New Flow" und der Eingabe eines passenden Namens starten Sie den Flow-Editor. Das erste Beispiel soll im Zeichen der Ordnung stehen: Wir erstellen einen Flow, der beim Start Dateisystempfade aus einer Datei liest und diese anschließend von allen Dateien und Unterordnern befreit. So räumen Sie Verzeichnisse wie "C:\temp" einfach auf. Der Flow-Editor ist in drei Spalten aufgeteilt und besitzt ein Menü oben. Links sehen Sie eine Bibliothek mit Aktionen, die mit einer Suchfunktion ausgestattet ist.
Der eigentliche Flow, den Sie erstellen, ist mittig zu finden – rechts sehen Sie Variablen, UI-Elemente und Grafiken, die Sie in Ihren Flow einfügen. Starten Sie Ihren Ablauf, indem Sie links die Aktion "Read text from file" wählen, zu finden entweder über das Suchfeld oder die darunter angezeigten Auswahlmöglichkeiten. Sie können die Aktion per Doppelklick oder Drag-and-Drop in den Flow ziehen. Power Automate Desktop öffnet automatisch die Eigenschaften der Aktion, damit können Sie die Detailkonfiguration vornehmen. Geben Sie den Pfad zu einer Textdatei an, etwa "C:\Automation\cleanup-paths.txt".
In "Store content as:" wählen Sie "List (each is a list item)" aus. Dann überprüfen Sie, dass die "Variables produced" als Option "FileContents" nutzt. Die Aktion ist nun so konfiguriert, dass sie die Datei im konfigurierten Pfad Zeile für Zeile liest und aus den Zeilen eine virtuelle Liste erstellt. Diese können wir gleich in einer Schleife durchlaufen und für jede gefundene Zeile eine Aktion ausführen. Falls die Textdatei noch nicht existiert, erstellen Sie sie jetzt und fügen einige Pfadangaben wie "C:\temp" und "C:\users\<benutzername>\Downloads\" ein, um später diese Pfade von Dateien zu befreien.
Als nächste Aktion ziehen Sie eine "For each"-Schleife in Ihren Flow. Die Schleife benötigt die Information, durch welche Variable oder Liste sie durchlaufen soll – dafür eignet sich die virtuelle Liste "FileContents", die dann zeilenweise eingelesen wird. Sie können die Liste über den Knopf "{x}" unter allen Variablen Ihres Flows auswählen oder tippen "%FileContents%" ein. Alle Variablen sind in Power Automate Desktop mit Prozentzeichen umschlossen. Die Schleife produziert "CurrentItem" als neue Variable, die dann die einzelnen Zeilen der Textdatei beinhaltet.
Nun ziehen Sie "Get files in folder" als Aktion in den Flow und platzieren sie innerhalb der Schleife vor dem "End"-Statement. Für "Folder" nutzen wir die Variable "%CurrentItem%", für "File filter" bietet sich das Jokerzeichen "*" für alle Dateiendungen oder besondere Dateiendungen wie "*.exe" an, die Sie berücksichtigen möchten. In "Advanced" finden Sie weitere Einstellmöglichkeiten – wichtig ist aber, dass die Variable "Files" nach dieser Aktion entsteht. Da "Files" alle Dateien aus dem angegebenen Pfad als Liste beinhaltet, nutzen Sie wieder eine Schleife: Ziehen Sie eine weitere "For each"-Schleife in die erste Schleife als Aktion nach "Get files in folder". Der "Value to iterate" ist nunmehr "%Files%", die im Pfad gefunden wurden. Jede Datei, die die Schleife betrachtet, lässt sich als "CurrentItem2" identifizieren und weiterverwenden. Falls Ihnen der Namen einer Variable nicht gefällt, können Sie sie per Doppelklick umbenennen.
Zuletzt folgt die Löschaktion: Ziehen Sie die "Delete file(s)"-Aktion in die zweite "For each"-Schleife und lassen dann "CurrentItem2", was die individuelle Datei in einem Ordner darstellt, löschen.
Schrittweiser Ablauf der Fehlersuche
Wer Flows erstellt, die über ein paar wenige Aktionen hinausgehen, sollte sich Gedanken über das Debugging, Trouble-shooting und die Lesbarkeit des Flows machen. Selbst wenn niemand sonst je mit dem Flow in Kontakt kommen sollte, ärgern Sie sich womöglich, wenn Sie die Logik nach einigen Wochen oder Monaten anpassen möchten und den Überblick verloren haben. Eine gewisse Struktur ermöglichen "Subflows", die eine Abzweigung in ausgelagerte Teillogiken erlauben. Für das Debugging sollten Sie in Betracht ziehen, Einzelschritte mit "Run next action" durchzuführen, anstatt auf "Run" zu klicken. Mit "Run next action" schreitet der Flow mit jedem weiteren Klick auf den Knopf eine Aktion weiter und Sie können jede einzeln nachverfolgen.
Bei langen Schleifen könnte es sein, dass Sie einige Male den nächsten Schritt auslösen müssen, bis sich der Flow vorwärts bewegt. Hier hilft die Übersicht der Variablen, die Sie im rechten Menü mit dem Schalter "{x}" aktivieren. Wenn Sie Werte in Variablen speichern, können Sie diese bei der schrittweisen Abfolge in der Variablenübersicht nachverfolgen – und zusehen, ob ihre Schleifen oder If-Abfragen korrekt sind. Arbeiten Sie mit Tabellen in Variablen, sehen Sie in der Schnellübersicht nicht alle Zeilen und Spalten, wenn die Tabelle sehr groß ist. Über das Dreipunkte-Menü und "View" öffnet Power Automate eine bessere Ansicht der Variable und Sie sollten alle Variablendetails sowie für Tabellen alle Zeilen und Spalten sehen.
Sind Sie mit ihrem Flow schon weiter fortgeschritten, starten Sie diesen nicht mit "Run next action", sondern markieren die Aktion in ihrem Flow, ab der Sie eine Detailbetrachtung wünschen und setzen einen "Breakpoint" über das "Debug / Toggle Breakpoint"-Menü – oder mit F9. Dann starten Sie den Flow mit "Run", wonach die Ausführung startet und am Breakpoint stehen bleibt und auf weitere Anweisungen wartet – entweder in Form von "Run","Run next action" oder "Stop".
Möchten Sie Ihren Flow überprüfen, ohne wirklich Daten zu verschieben oder etwas zu löschen, fügen Sie anstatt der eigentlichen Aktion, die Sie über das Kontextmenü und "Disable" temporär ausschalten können, eine Ersatzaktion wie etwa "Display message" ein. Mit dieser erzeugen Sie eine Bildschirmausgabe mit Variableninhalten. So überprüfen Sie den Flow und Fehlerfälle sowie die If-
Else-Konstrukte.
Beispiel 2: Verarbeiten von Werten aus CSV-Datei
Gerade wenn Sie neu in Power Automate sind, sollten Sie sich die verfügbaren Aktionen im Menü links genauer ansehen – viele Tätigkeiten im Umgang mit lokalen Dateien oder Ressourcen auf dem Computer existieren bereits. Sie können Werte aus einer CSV-Datei lesen und weiterverarbeiten – um für das nächste Beispiel eine Benutzerliste, die Gastkonten beinhaltet, aus dem Microsoft-Online-Tenant abzuarbeiten. Wo immer eine E-Mail-Adresse für einen Gast vorhanden ist, wollen wir eine Erinnerung per E-Mail schreiben und an den Benutzer schicken.
Erstellen wir nun einen neuen Flow und nutzen die "Read from CSV file"-Aktion. Geben Sie in "File path" den Pfad zur CSV-Datei an. In "Advanced" überprüfen Sie, ob die Einstellung "Columns separator" passt. Wenn Sie Ihre kommaseparierten Dateien immer mit Kommata erzeugen, können Sie hier "Custom" und in "Custom separator" das Komma eintragen – dann versucht Power Automate nicht selbst zu erkennen, welches der beste Separator ist.
In "Variables produced" sollten wir eine "CSVTable" erhalten, die alle Reihen und Spalten in einer großen Matrix vorhält. Es folgt erneut eine Schleife, um durch alle Reihen durchzulaufen und jede Reihe nach Werten zu inspizieren. Erstellen Sie eine Foreach-Schleife und geben "CSVTable" als Basiswert für die Schleife an. Diese produziert auch hier eine "CurrentItem"-Variable, die die einzelnen Zeilen der CSV-Datei repräsentiert.
Wenn Sie die CSV-Datei nicht selbst erstellen und etwas Fehlerbehandlung einbauen wollen, suchen Sie innerhalb der Schleife nach Spaltenwerten, bevor Sie innerhalb der Schleife weitermachen. Für unser Beispiel prüfen wir, ob ein Gastbenutzer, der in der CSV-Datei als Zeile dargestellt wird, im Feld "mail" einen Wert hat. Das Feld ist als Spaltenüberschrift benannt und damit in Power Automate ansprechbar. Nur wenn da ein Wert darinsteht, können wir dem Gast auch eine E-Mail schreiben.
Ziehen Sie nun eine "If"-Aktion in die Foreach-Schleife und ändern Sie die Parameter von "If" zu "First operand". Wählen Sie anschließend "CurrentItem" aus, was den Gastbenutzer repräsentiert. Power Automate fügt dann, wie gewohnt, die Variable "%CurrentItem%" hinzu. Als Operator nutzen Sie "Isn't empty". Da "%CurrentItem%" aber die ganze Zeile mit allen Spalteninformationen repräsentiert, müssen Sie die Variable im "First operand" anpassen. Da nur die Spalte "mail" auf einen Wert überprüft werden soll, ändern Sie die Variable in "%CurrentItem['mail']%" – Sie fügen also das Feld in eckigen Klammern hinzu, weiterhin eingeschlossen in den Prozentzeichen, die eine Variable kennzeichnen.
Innerhalb der "If"-Verzweigung gibt es Arbeit: Wir erzeugen mit "Set variable" die neue Variable "emailadresse" und legen dort den Wert von %CurrentItem['mail']% ab. Dann ziehen wir die Aktion "Send email" in die Abzweigung und konfigurieren den Mailversand – die Absendeadresse lässt sich frei wählen, die Empfängeradresse steht in der Variable "%emailaddress%", die wir gerade angelegt haben. Wir fügen eine freundliche Nachricht als E-Mail-Body hinzu, die ebenfalls Variablen aus dem CSV enthalten kann – wenn Vor- und Nachname in den Feldern "givenName" und "surname" stehen, können Sie im E-Mail-Textfeld dann wie gewohnt "%CurrentItem['givenName']%" und "%CurrentItem['surname']%" verwenden.
Wenn Sie es sich bequemer machen und die Felder später nochmal nutzen möchten, speichern Sie die zusätzlichen Felder auch in Variablen und rufen sie wieder ab. Zwingend notwendig sind auch die Serverdetails für den SMTP-Server, über den Sie die E-Mail verschicken wollen. Alternativ lässt sich anstatt "Send email" auch die Aktion "Send email message through Outlook" nutzen, was ein bestehendes Outlook-Profil auf dem Computer verwendet, um die Nachricht zu versenden. Das spart die Konfiguration der Zugangsdaten für SMTP und kann eine bereits bestehende Mailbox, die vielleicht von mehreren Kollegen betreut wird, verwenden. Damit ließe sich auch das Sicherheitsrisiko umgehen, die SMTP-Serverdaten samt Benutzername und Passwort in die Automationslogik einzuarbeiten.
Wenn die Automatisierung etwas komplexer ausfällt oder Sie die Logik strukturieren möchten, arbeiten Sie wie erwähnt mit "Subflows". Subflows sind Funktionen oder Routinen, die Sie aufrufen und dann Ergebnisse erhalten. Nützlich sind diese Subflows, wenn Sie dieselbe Aktion in ähnlicher Form mehrfach durchführen oder einen komplexen Vorgang "externalisieren" wollen, damit Ihre Hauptlogik nicht zu sehr ausufert.
Um die E-Mail-Adressen nicht nur auf Präsenz, sondern auf Syntax zu überprüfen, erstellen wir nun einen Subflow, der die hinterlegten Adressen mithilfe einer Regular Expression (Regex) auf Validität prüft. Da Power Automate keine geeignete Regex-Aktion zur Verfügung stellt, behelfen wir uns mit einem PowerShell-Zweizeiler. In der Logikübersicht wählen Sie "Subflows" und "+" – ein neuer Reiter mit leerer Logik erscheint. Nutzen Sie die "Run Powershell script"-Aktion, um entweder ein Skript zu starten oder ein paar Zeilen PowerShell-Code auszuführen. Da die E-Mail-Adresse als Variable verfügbar ist, können wir sie im Skript wie in allen anderen Aktionen verwenden – und mit dem Variablennamen "%emailaddress%" aufrufen. Haben Sie ein fertiges Skript, rufen Sie es in "Powershell code to run" auf oder geben Ihren Code direkt ein. Wir speichern das Regex-Pattern, auf das wir prüfen wollen, in der Textdatei "pattern.txt" und nutzen folgenden Code:
Die Powershell-Aktion produziert zwei Variablen: "PowershellOutput" und "ScriptError". In "PowershellOutput" steht entweder "True", wenn die Regex erfolgreich übereinstimmt und wir eine E-Mail-Adresse haben, oder "False", wenn es sich um eine anders formatierte Zeichenkette handelte. Als Folgeaktion von "Run Powershell script" ist "Trim text" ratsam, um "whitespace characters from the beginning and end" von "PowershellOutput" zu entfernen, bevor die Variable dann im Hauptflow weiterverwendet wird. Den Haupt-Flow passen Sie natürlich so an, dass nach dem "Run subflow"-Schritt eine "If"-Abfrage abläuft, die den "PowershellOutput" prüft und "True" vorfinden soll. Nur dann wollen Sie eine E-Mail versenden.
Beispiel 3: Aktionen aufzeichnen
Power Automate Desktop kommt mit zwei Aufzeichnern, die Benutzerschritte, Interaktionen mit Anwendungen und Arbeitsabläufe in Desktopanwendungen oder in Browseranwendungen festhalten. Anwendungen, die keine APIs oder moderne Integration von Schnittstellen in Windows aufweisen, können Sie zwar nicht mit Standardaktionen aus Power Automate ansprechen, aber zumindest die Benutzerschritte aufzeichnen, die Sie dann verfeinern und anpassen.
Stellen Sie sich die Übertragung von Daten, die bei einem Event in Excel gesammelt wurden, in ein Marketingsystem vor. Nachdem sich Eventbesucher freiwillig gemeldet haben und ihre Daten aufzeichnen ließen, wollen Sie diese Daten aus Excel in das CRM-System oder eine Vorstufe davon übertragen. Kennt das CRM-System keine Schnittstelle oder API, mit der sich Daten automatisiert über REST oder PowerShell aus Excel lesen und Werte übertragen lassen, hilft nur eins: einen Kollegen bei der Übertragung der Daten über das Benutzerinterface beobachten, die Schritte aufzeichnen und dann automatisieren.
Sie starten mit dem Öffnen der jeweiligen Anwendungen und laden die zu übertragenden Daten aus dem Quellsystem, im Beispiel Excel. Anschließend navigieren Sie zur Zielanwendung und öffnen die Benutzereingabemaske, in der Sie die Daten übertragen möchten. In Power Automate Desktop erstellen Sie nun einen neuen Flow und wählen "Desktop Recorder", wonach sich das Programm minimiert und ein kleineres Fenster für die Aufzeichnungssteuerung öffnet.
Das Fenster nimmt alle einzelnen Schritte auf, die Sie später noch bearbeiten, bei Bedarf löschen und die Reihenfolge anpassen können. Das Fenster erlaubt außerdem das Steuern der Aufnahme – Starten, Pausieren und am Ende das Fertigstellen der Aufzeichnung und die Rückkehr zu Power Automate Desktop. Wenn Sie bereit sind, die Schritte durchzuführen, starten Sie mit "Record" und drücken am Ende "Finish". Alle aufgezeichneten Schritte werden in Ihren Flow übertragen, wo Sie den Flow dann nochmal abspielen und auf Fehler oder notwendige Anpassungen prüfen.
Für den Anfang haben Sie nur die Tätigkeit selbst aufgezeichnet, das Öffnen der Quelldaten und der Zielmaske hat die Aufzeichnung nicht erfasst. Möchten Sie die Vorbereitungen ebenfalls aufnehmen, empfiehlt sich ein Subflow, der die Startvorkehrungen abschließt, dann zur Hauptautomation zurückkehrt und abschließend in einem weiteren Subflow zum Schließen der Quell- und Zielsysteme endet. So können Sie die Startbedinungen getrennt vom eigentlichen Flow verwalten und – falls nötig – beim Übertragen auf andere Computer oder Maschinen effizient anpassen.
Fazit
Geht es um die Verarbeitung von lokalen Dateien oder die Aufzeichnung und Wiederholung von Tätigkeiten in alten, nicht per API oder Skript erreichbaren Anwendungen, kann Power Automate Desktop ein guter Ansatz sein. Kenntnisse beim Erstellen von Programmlogiken, zumindest was Schleifen und Verzweigungen anbelangt, sind von Vorteil. Für Admins kann Power Automate auch reizvoll sein: Für Azure und AWS sowie das Active Directory und Datenbankoperationen gibt es auch für IT-Profis vordefinierte Aktionen zur Flow-Erstellung.