Get-/Set-Clipboard: Daten über die Zwischenablage kopieren in PowerShell

    ClipboardPowerShell 5.0 wartet mit zwei neuen Cmdlets auf, die den Datenaustausch mit anderen Anwendungen über die Zwischenablage erlauben. Sie unterstützen dabei nicht nur Text, sondern auch Formate wie Grafiken, Audiodaten oder Dateisystem­objekte.

    Die in Windows 10 und Server 2016 enthaltene PowerShell 5.0 bringt einige neue Utilities, die das Management von Dateien und die Interaktion mit der GUI vereinfachen. Dazu zählt die Fähigkeit, ZIP-Archive zu erstellen und zu entpacken, den Papierkorb zu leeren oder die Zwischenablage zu nutzen. Diese Features werden auch unter früheren Versionen des Betriebssystems zur Verfügung stehen, sobald Microsoft das Windows Management Framework 5.0 freigibt.

    Datenaustausch mit GUI-Anwendungen

    Dem Datenaustausch über die Zwischenablage dienen die Cmdlets Get-Clipboard und Set-Clipboard. Erwartungsgemäß liest das erste die Daten aus der Zwischenablage, während das zweite sie dorthin schreibt. Im einfachsten Fall kann man die Funktionsweise der zwei Cmdlets so demon­strieren:

    Set-Clipboard "Hello World!"
    Get-Clipboard

    Text mit Set-Clipboard in die Zwischenablage kopieren und mit Get-Clipboard wieder auslesen.

    Allerdings wird es nicht allzu viele Anlässe geben, Daten innerhalb einer PowerShell-Session über die Zwischenablage zu transferieren. Spannender klingt da schon die Möglichkeit, auf diesem Weg mit Desktop-Applikationen zu kommunizieren. So könnte man etwa den Inhalt eines Editors oder eines Mail-Clients in die Zwischenablage kopieren und dann in PowerShell bearbeiten.

    Ein Beispiel wäre etwa, Zeilen und Zeichen zu zählen, nachdem man sie von einer bestimmten Anwendung in die Zwischenablage übertragen hat:

    Get-Clipboard | measure -Character -Line

    Denkbar sind natürlich auch alle möglichen String-Operationen oder die Suche nach bestimmten Inhalten:

    Get-Clipboard | Select-String "PowerShell"

    Unterstützung für Audio- und Bilddaten

    Mit Get-Clipboard lässt sich nicht nur Text auslesen, vielmehr kennt es zusätzlich den Parameter Format, der neben Text auch die Werte Image, Audio oder FileDropList akzeptiert. Hier stellt sich natürlich die Frage, was man auf der Kommandozeile mit Audio- und Bilddaten aus der Zwischenablage anfangen soll.

    Images liegen ebenfalls als Objekte vor, deren Eigenschaften man auswerten kann.

    Sie liegen jedoch als Objekte vor, so dass man einerseits ihre Eigenschaften auswerten kann, im Fall von Images etwa Höhe, Breite, Auflösung, Palette, etc. Andererseits verfügt PowerShell über mehrere Methoden zur Manipulation solcher Media-Objekte, zum Beispiel GetThumbnailImage, mit dem man Thumbnails von kopierten Bildern erzeugen könnte.

    Dateiobjekte austauschen

    Beim Typ FileDropList handelt es sich um eine Sammlung von Dateiobjekten, wie man sie etwa als Ergebnis von Get-ChildItem erhält. Auf ihre Elemente lassen sich alle gängigen Operationen wie Kopieren, Umbenennen oder Löschen anwenden.

    Sie gelangen in die Zwischenablage, indem man zum Beispiel mehrere Dateien im Windows Explorer markiert und den Befehl Kopieren ausführt. Aber auch PowerShell selbst bietet mit Set-Clipboard dafür die Mittel, indem man das Cmdlet mit dem Parameter Path aufruft:

    Set-Clipboard -Path *.rtf, *.doc

    Damit würde man eine Array bestehend aus allen .rtf- und.doc-Dateien im aktuellen Verzeichnis an die Zwischenablage schicken. Sie ließen sich dann umgekehrt im Explorer wieder einfügen.

    Inhalte an die Zwischenablage anhängen

    Set-Clipboard, mit dem PowerShell nun eine Alternative zu clip.exe bietet, besitzt noch eine interessante Fähigkeit: Mit Hilfe des Schalters Append kann man Inhalte an die Zwischenablage anfügen, ohne diese wie sonst üblich zu überschreiben:

    Set-Clipboard -Value "Das ist der erste Teil, "
    Set-Clipboard -Value "und der zweite folgt sogleich." -Append

    Set-Clipboard kann Inhalte an die Zwischenablage anhängen

    Diese Funktion beschränkt sich nicht auf reinen Text, sondern ist auch bei einem Aufruf mit Path zulässig.

    Keine Kommentare