PowerShell Kopiëren naar Klembord: Voorbij Ctrl+C en Ctrl+V

Wanneer je code schrijft in PowerShell, is het laatste waar je waarschijnlijk aan denkt, het Windows-klembord. We kennen waarschijnlijk allemaal de beruchte toetsenbordsnelkoppelingen Ctrl-C en Ctrl-V om van het klembord te kopiëren en plakken, maar dit gebeurt meestal via de GUI. In onze PowerShell-scripts is dit niet al te nuttig. Wist je echter dat er een PowerShell-kopieerfunctie naar het klembord bestaat?

In dit artikel ga ik uitleggen hoe we vroeger kopieer- en plakfunctionaliteit kregen in PowerShell en vervolgens introduceer ik de cmdlets die PowerShell biedt vanaf versie 5.

Voor PowerShell v5 was de enige manier om naar het klembord te kopiëren, door gebruik te maken van de clip.exe-toepassing.

Clip.exe op de oude manier

Deze toepassing bestond al lange tijd en werkte gewoon. Door tekst naar clip.exe te sturen, kon je tekst naar het klembord kopiëren. Dit werkte, maar het was altijd vervelend als het een regeleinde toevoegde na elke invoer.

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

Niet alleen dat, maar we hadden geen eenvoudige manier om informatie uit het klembord te halen. We moesten de inhoud handmatig plakken zodra deze zich in het klembord bevond. Met de native klembordopdrachten is dit verleden tijd!

We hebben nu twee cmdlets die dit probleem veel beter oplossen; Get-Clipboard en Set-Clipboard.

Set-Clipboard Powershell-opdracht

Set-Clipboard vervangt clip.exe maar gedraagt zich precies hetzelfde. Nu, in plaats van de uitvoer naar clip te leiden, kun je Set-Clipboard gebruiken. Als je dit doet, zul je merken dat de overbodige carriage return verdwenen is wanneer je de inhoud ergens plakt.

Het klembord bevat nu alleen de tekenreeks Hallo.

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

Nog een handige functie met Set-Clipboard is de Append-parameter. Traditioneel kon het klembord slechts één item bevatten. Nu, door de Append-parameter te gebruiken met Set-Clipboard, kun je een onbeperkt aantal items toevoegen zonder het vorige te verwijderen.

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

Get-Clipboard Parameters

Zelfs als je Set-Clipboard niet gebruikt om inhoud naar het klembord te kopiëren, kun je nog steeds Get-Clipboard gebruiken om een paar verschillende typen te begrijpen dan alleen eenvoudige tekenreeksen. Als je bijvoorbeeld een lijst met bestanden hebt gekopieerd vanuit Bestandsverkenner en je wilt deze lijst in je PowerShell-console krijgen, gebruik dan eenvoudigweg de Format-parameter en de FileDropList-waarde op 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

Je ziet dat het begrijpt dat het type gegevens in het klembord een lijst met bestanden is. Ook kun je hetzelfde doen met afbeeldingen en andere entiteiten.

Kopieer een afbeelding uit een andere toepassing en gebruik -Format Image om verschillende eigenschappen over de afbeelding op te halen.

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        : {}

Klembordmanipulatie in PowerShell Core

Helaas zijn de commando’s Get-Clipboard en Set-Clipboard niet beschikbaar in PowerShell Core (v6+), maar je kunt ze nog steeds gebruiken met behulp van de WindowsCompatibility-module. De WindowsCompatibility-module stelt je in staat om Windows PowerShell-cmdlets te gebruiken binnen PowerShell Core.

Zodra je de WindowsCompatibility-module hebt geïnstalleerd, voer je Invoke-WinCommand uit en wikkel je verwijzingen naar Get-Clipboard en Set-Clipboard erin.

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

Je zult merken dat je het klembord kunt lezen en ernaar schrijven zoals je dat zou doen met Windows PowerShell.

Samenvatting

Je kunt tegenwoordig zoveel meer doen met het klembord in PowerShell. Het kopiëren naar het klembord met PowerShell is mogelijk gemaakt met behulp van de Get-Clipboard en Set-Clipboard. Met deze cmdlets kun je PowerShell gebruiken om naar het klembord te kopiëren en er ook intelligent uit te plakken.

Voor een volledige uitleg van de cmdlets, bekijk de gedetailleerde hulp:

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

Hiermee krijg je alle verschillende parameters die je kunt uitproberen.

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