Copiare su Appunti con PowerShell: Oltre Ctrl+C e Ctrl+V

Quando si scrive codice in PowerShell l’ultima cosa a cui si potrebbe pensare è
la clipboard di Windows. Probabilmente tutti noi conosciamo i famigerati tasti di scelta rapida Ctrl-C e Ctrl-V per copiare e incollare dalla clipboard, ma di solito questo viene fatto tramite la GUI. Nei nostri script PowerShell, non è molto utile. Tuttavia, sapevate che esiste una funzione PowerShell per copiare nella clipboard?

In questo articolo, spiegherò come siamo riusciti ad ottenere la funzionalità di copia e incolla in PowerShell e poi vi presenterò i cmdlet che PowerShell fornisce a partire dalla versione 5.

Prima di PowerShell v5, l’unico modo per copiare nella clipboard era utilizzando l’applicazione clip.exe.

Clip.exe vecchia scuola

Questa applicazione esiste da molto tempo e funziona semplicemente. Inviando testo a clip.exe, si poteva copiare il testo nella clipboard. Questo funzionava, ma era sempre fastidioso quando aggiungeva un ritorno a capo dopo ogni voce.

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

Non solo, ma non avevamo un modo semplice per estrarre informazioni dalla clipboard. Eravamo costretti a incollare manualmente i contenuti una volta che erano nella clipboard. Con i comandi nativi della clipboard, questo non è più un problema!

Ora abbiamo due cmdlet che risolvono molto meglio questo problema; Get-Clipboard e Set-Clipboard.

Comando Powershell Set-Clipboard

Set-Clipboard sostituisce clip.exe ma si comporta allo stesso modo. Ora, invece di inviare l’output a clip, puoi utilizzare Set-Clipboard. Se lo fai, noterai che il ritorno a capo finale viene eliminato quando incolli il contenuto da qualche parte.

La clipboard ora contiene solo la stringa Hello.

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

Un’altra funzionalità utile di Set-Clipboard è il parametro Append. Tradizionalmente, la clipboard poteva contenere solo un elemento. Ora, utilizzando il parametro Append con Set-Clipboard, puoi aggiungere un numero illimitato di elementi senza rimuovere quelli precedenti.

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

Parametri di Get-Clipboard

Anche se non utilizzi Set-Clipboard per copiare contenuti negli appunti, puoi comunque utilizzare Get-Clipboard per comprendere alcuni tipi diversi dalle semplici stringhe. Ad esempio, se hai copiato una lista di file da Esplora file e desideri ottenere questa lista nella console di PowerShell, utilizza semplicemente il parametro Format e il valore FileDropList su 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

Puoi vedere che comprende il tipo di dati nella clipboard come una lista di file. Inoltre, puoi fare lo stesso con immagini e altre entità.

Copia un’immagine da un’altra applicazione e utilizza il comando -Format Image per recuperare diverse proprietà dell’immagine utilizzando 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        : {}

Manipolazione degli Appunti in PowerShell Core

Purtroppo, i comandi Get-Clipboard e Set-Clipboard non sono disponibili in PowerShell Core (v6+) ma è comunque possibile utilizzarli usando il modulo WindowsCompatibility. Il modulo WindowsCompatibility permette di utilizzare i cmdlet di Windows PowerShell all’interno di PowerShell Core.

Una volta installato il modulo WindowsCompatibility, esegui il comando Invoke-WinCommand e racchiudi all’interno i riferimenti a Get-Clipboard e Set-Clipboard.

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

Noterai che puoi leggere e scrivere negli appunti come faresti con Windows PowerShell.

Riepilogo

Oggi puoi fare molto di più con gli appunti in PowerShell. La copia negli appunti di PowerShell è resa possibile grazie ai cmdlet Get-Clipboard e Set-Clipboard. Questi cmdlet ti consentono di utilizzare PowerShell per copiare negli appunti e per incollare in modo intelligente dagli appunti.

Per una panoramica completa dei cmdlet, consulta l’aiuto dettagliato:

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

Questo ti fornirà tutti i vari parametri che puoi provare.

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