PowerShell zum Kopieren in die Zwischenablage: Über Ctrl+C und Ctrl+V hinaus

Beim Schreiben von Code in PowerShell ist das Letzte, woran Sie vielleicht denken,
die Windows-Zwischenablage. Wir kennen alle wahrscheinlich die berüchtigten Tastenkombinationen Ctrl-C und Ctrl-V zum Kopieren und Einfügen aus der Zwischenablage, aber dies wird normalerweise über die GUI gemacht. In unseren PowerShell-Skripten ist dies nicht besonders nützlich. Wussten Sie jedoch, dass es eine Funktion zum Kopieren in die Zwischenablage in PowerShell gibt?

In diesem Artikel werde ich erläutern, wie wir früher die Kopier- und Einfügefunktion in PowerShell genutzt haben, und dann die Cmdlets vorstellen, die PowerShell ab Version 5 bietet.

Vor PowerShell v5 war der einzige Weg zum Kopieren in die Zwischenablage die Verwendung der clip.exe Anwendung.

Alte Schule clip.exe

Diese Anwendung existiert schon seit langer Zeit und hat einfach funktioniert. Indem man Text an clip.exe weiterleitete, konnte man Text in die Zwischenablage kopieren. Das hat funktioniert, war aber immer ärgerlich, wenn es nach jedem Eintrag einen Zeilenumbruch hinzufügte.

PS51> Write-Output 'Hello' | clip
The PowerShell copy to clipboard function can replace the old school clip.exe

Nicht nur das, wir hatten auch keine einfache Möglichkeit, Informationen aus der Zwischenablage zu ziehen. Wir waren gezwungen, den Inhalt manuell einzufügen, sobald er in der Zwischenablage war. Mit den nativen Zwischenablagebefehlen ist das vorbei!

Wir haben jetzt zwei Cmdlets, die dieses Problem viel besser lösen; Get-Clipboard und Set-Clipboard.

Set-Clipboard Powershell-Befehl

Set-Clipboard ersetzt clip.exe, verhält sich jedoch genauso. Anstatt die Ausgabe an clip zu leiten, können Sie jetzt Set-Clipboard verwenden. Wenn Sie dies tun, werden Sie feststellen, dass das abschließende Wagenrücklaufzeichen verschwunden ist, wenn Sie den Inhalt irgendwo einfügen.

Die Zwischenablage enthält nun nur noch den String Hello.

PS> Write-Output 'Hello' | Set-Clipboard

Eine weitere nützliche Funktion von Set-Clipboard ist der Parameter Append. Traditionell konnte die Zwischenablage nur einen Eintrag speichern. Mit dem Parameter Append von Set-Clipboard können Sie nun eine unbegrenzte Anzahl von Einträgen hinzufügen, ohne die vorherigen zu entfernen.

PS> Write-Output 'Hello' | Set-Clipboard -Append

Parameter für Get-Clipboard

Selbst wenn Sie Set-Clipboard nicht verwenden, um Inhalte in die Zwischenablage zu kopieren, können Sie dennoch Get-Clipboard verwenden, um verschiedene Arten von Inhalten zu erkennen, die über einfache Zeichenketten hinausgehen. Wenn Sie beispielsweise eine Liste von Dateien aus dem Datei-Explorer kopiert haben und diese Liste in Ihre PowerShell-Konsole übertragen möchten, verwenden Sie einfach den Parameter Format und den Wert FileDropList für Get-Clipboard.

PS51> Get-Clipboard -Format FileDropList

Directory: \\Mac\Home\Downloads


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
------         8/1/2019  10:42 AM       17919094 00_03_xr30_whatyoushouldhave.mov


    Directory: \\Mac\Home\Documents\Snagit\Autosaved Captures.localized


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
------         8/1/2019   1:58 PM      169144472 2019-08-01_13-47-55.mp4

Sie können sehen, dass er den Typ der Daten in der Zwischenablage als Liste von Dateien erkennt. Dies funktioniert auch mit Bildern und anderen Elementen.

Kopieren Sie ein Bild aus einer anderen Anwendung und verwenden Sie -Format Bild, um verschiedene Eigenschaften über das Bild abzurufen.

PS51> Get-Clipboard -Format Image


Tag                  :
PhysicalDimension    : {Width=813, Height=113}
Size                 : {Width=813, Height=113}
Width                : 813
Height               : 113
HorizontalResolution : 96
VerticalResolution   : 96
Flags                : 335888
RawFormat            : [ImageFormat: b96b3caa-0728-11d3-9d7b-0000f81ef32e]
PixelFormat          : Format32bppRgb
Palette              : System.Drawing.Imaging.ColorPalette
FrameDimensionsList  : {7462dc86-6180-4c7e-8e3f-ee7333a7a483}
PropertyIdList       : {}
PropertyItems        : {}

Zwischenablage-Manipulation in PowerShell Core

Leider sind die Befehle Get-Clipboard und Set-Clipboard in PowerShell Core (v6+) nicht verfügbar, aber Sie können sie dennoch mithilfe des Moduls WindowsCompatibility verwenden. Das WindowsCompatibility-Modul ermöglicht es Ihnen, Windows PowerShell-Cmdlets in PowerShell Core zu verwenden.

Wenn Sie das WindowsCompatibility-Modul installiert haben, führen Sie Invoke-WinCommand aus und umgeben Sie Ihre Verweise auf Get-Clipboard und Set-Clipboard damit.

PS622> Invoke-WinCommand -ScriptBlock {'This is on the clipboard' | Set-ClipBoard}
PS622> Invoke-WinCommand -ScriptBlock {Get-ClipBoard}
This is on the clipboard

Sie werden feststellen, dass Sie die Zwischenablage genauso lesen und schreiben können wie mit Windows PowerShell.

Zusammenfassung

Mit der Zwischenablage in PowerShell können Sie heutzutage so viel mehr tun. Das Kopieren in die Zwischenablage mit PowerShell wird durch die Verwendung von Get-Clipboard und Set-Clipboard ermöglicht. Diese Cmdlets ermöglichen es Ihnen, mit PowerShell in die Zwischenablage zu kopieren und intelligent aus der Zwischenablage einzufügen.

Für eine vollständige Aufschlüsselung der Cmdlets schauen Sie sich die detaillierte Hilfe an:

PS51> Get-Help Set-Clipboard -Detailed
PS51> Get-Help Get-Clipboard -Detailed

Dort finden Sie alle verschiedenen Parameter, die Sie ausprobieren können.

Source:
https://adamtheautomator.com/powershell-copy-to-clipboard/