Copie PowerShell dans le presse-papiers : Au-delà de Ctrl+C et Ctrl+V

Lorsque vous écrivez du code en PowerShell, la dernière chose à laquelle vous pourriez penser est le presse-papiers Windows. Nous connaissons tous probablement les fameux raccourcis clavier Ctrl-C et Ctrl-V pour copier et coller à partir du presse-papiers, mais cela se fait généralement via l’interface graphique. Dans nos scripts PowerShell, ce n’est pas très utile. Cependant, saviez-vous qu’il existe une fonction de copie vers le presse-papiers en PowerShell ?

Dans cet article, je vais vous expliquer comment nous avions l’habitude d’obtenir la fonctionnalité de copier-coller en PowerShell, puis je vais vous présenter les cmdlets que PowerShell fournit à partir de la version 5.

Avant PowerShell v5, la seule façon de copier vers le presse-papiers était d’utiliser l’application clip.exe.

Ancienne école clip.exe

Cette application existe depuis longtemps et fonctionne simplement. En envoyant du texte à clip.exe, vous pouviez copier du texte dans le presse-papiers. Cela fonctionnait, mais c’était toujours ennuyeux car il ajoutait un retour à la ligne après chaque entrée.

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

Non seulement cela, mais nous n’avions aucun moyen facile de récupérer des informations à partir du presse-papiers. Nous étions obligés de coller manuellement le contenu une fois qu’il était dans le presse-papiers. Avec les commandes natives du presse-papiers, ce n’est plus le cas !

Nous disposons maintenant de deux cmdlets qui résolvent ce problème de manière bien meilleure : Get-Clipboard et Set-Clipboard.

Commande PowerShell Set-Clipboard

Set-Clipboard remplace clip.exe mais fonctionne exactement de la même manière. Maintenant, au lieu de rediriger la sortie vers clip, vous pouvez utiliser Set-Clipboard. Si vous le faites, vous remarquerez que le retour chariot final disparaît lorsque vous collez le contenu quelque part.

Le presse-papiers contient maintenant uniquement la chaîne Hello.

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

Une autre fonctionnalité utile avec Set-Clipboard est le paramètre Append. Traditionnellement, le presse-papiers ne pouvait stocker qu’un seul élément. Maintenant, en utilisant le paramètre Append avec Set-Clipboard, vous pouvez ajouter un nombre illimité d’éléments sans supprimer les précédents.

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

Paramètres de Get-Clipboard

Même si vous n’utilisez pas Set-Clipboard pour copier du contenu dans le presse-papiers, vous pouvez toujours utiliser Get-Clipboard pour comprendre quelques types différents autres que les simples chaînes de caractères. Par exemple, si vous avez copié une liste de fichiers depuis l’Explorateur de fichiers et que vous souhaitez obtenir cette liste dans votre console PowerShell, il vous suffit d’utiliser le paramètre Format et la valeur FileDropList sur 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

Vous pouvez voir qu’il comprend que le type de données dans le presse-papiers est une liste de fichiers. Vous pouvez également faire la même chose avec des images et d’autres entités.

Copiez une image à partir d’une autre application et utilisez la commande -Format Image pour récupérer différentes propriétés de l’image avec la commande Get-Clipboard.

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

Manipulation du presse-papiers dans PowerShell Core

Malheureusement, les commandes Get-Clipboard et Set-Clipboard ne sont pas disponibles dans PowerShell Core (v6+), mais vous pouvez toujours les utiliser en utilisant le module WindowsCompatibility. Le module WindowsCompatibility vous permet d’utiliser des cmdlets de Windows PowerShell dans PowerShell Core.

Une fois que vous avez installé le module WindowsCompatibility, exécutez la commande Invoke-WinCommand et enveloppez vos références à Get-Clipboard et Set-Clipboard à l’intérieur.

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

Vous constaterez que vous pouvez lire et écrire dans le presse-papiers comme vous le feriez avec Windows PowerShell.

Résumé

De nos jours, vous pouvez faire beaucoup plus avec le presse-papiers en PowerShell. La copie vers le presse-papiers en PowerShell est rendue possible grâce aux cmdlets Get-Clipboard et Set-Clipboard. Ces cmdlets vous permettent d’utiliser PowerShell pour copier vers le presse-papiers et coller intelligemment à partir du presse-papiers également.

Pour obtenir une description complète des cmdlets, consultez l’aide détaillée:

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

Cela vous donnera tous les différents paramètres que vous pouvez essayer.

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