Cuando se escribe código en PowerShell, lo último en lo que se piensa es en el portapapeles de Windows. Probablemente todos conozcamos los famosos atajos de teclado Ctrl-C y Ctrl-V para copiar y pegar desde el portapapeles, pero esto se hace típicamente a través de la interfaz gráfica de usuario. En nuestros scripts de PowerShell, esto no es muy útil. Sin embargo, ¿sabías que existe una función en PowerShell para copiar al portapapeles?
En este artículo, voy a explicar cómo solíamos obtener la funcionalidad de copiar y pegar en PowerShell y luego te presentaré los cmdlets que PowerShell proporciona a partir de la versión 5.
Antes de PowerShell v5, la única forma de copiar al portapapeles era mediante el uso de la aplicación clip.exe.
El viejo clip.exe
Esta aplicación ha estado presente durante mucho tiempo y simplemente funcionaba. Al enviar texto a clip.exe, se podía copiar texto en el portapapeles. Esto funcionaba, pero siempre era molesto cuando agregaba un salto de línea después de cada entrada.

No solo eso, sino que no teníamos una forma fácil de extraer información del portapapeles. Nos veíamos obligados a pegar manualmente el contenido una vez que estaba en el portapapeles. ¡Con los comandos nativos del portapapeles, eso ya no es necesario!
Ahora tenemos dos cmdlets que resuelven este problema mucho mejor: Get-Clipboard
y Set-Clipboard
.
Comando Set-Clipboard en PowerShell.
Set-Clipboard
reemplaza clip.exe pero se comporta exactamente igual. Ahora, en lugar de enviar la salida a clip, puedes usar Set-Clipboard
. Si haces esto, notarás que el retorno de carro al final ha desaparecido cuando pegas el contenido en algún lugar.
El portapapeles ahora solo contiene la cadena Hello.
Otra característica útil de Set-Clipboard
es el parámetro Append
. Tradicionalmente, el portapapeles solo ha podido almacenar un elemento. Ahora, mediante el uso del parámetro Append
con Set-Clipboard
, puedes agregar un número ilimitado de elementos sin eliminar los anteriores.
Parámetros de Get-Clipboard
Incluso si no usas Set-Clipboard
para copiar contenidos al portapapeles, aún puedes usar Get-Clipboard
para comprender algunos tipos diferentes además de cadenas simples. Por ejemplo, si has copiado una lista de archivos desde Explorador de archivos y deseas obtener esta lista en tu consola de PowerShell, simplemente usa el parámetro Format
y el valor �FileDropList
en Get-Clipboard
.
Puedes ver que comprende que el tipo de datos en el portapapeles es una lista de archivos. Además, puedes hacer lo mismo con imágenes y otras entidades.
Copia una imagen desde otra aplicación y utiliza -Format Image
para Get-Clipboard
y así obtener varias propiedades sobre la imagen.
Manipulación del Portapapeles en PowerShell Core
Desafortunadamente, los comandos Get-Clipboard
y Set-Clipboard
no están disponibles en PowerShell Core (v6+), pero aún puedes utilizarlos con el módulo WindowsCompatibility. Este módulo te permite usar los cmdlets de Windows PowerShell dentro de PowerShell Core.
Una vez que tengas instalado el módulo WindowsCompatibility, ejecuta Invoke-WinCommand
y envuelve tus referencias a Get-Clipboard
y Set-Clipboard
dentro de él.
Descubrirás que puedes leer y escribir en el portapapeles como lo harías con Windows PowerShell.
Resumen
Puedes hacer mucho más con el portapapeles en PowerShell hoy en día. La copia al portapapeles en PowerShell ha sido posible gracias a Get-Clipboard
y Set-Clipboard
. Estos cmdlets te permiten usar PowerShell para copiar al portapapeles e inteligentemente pegar desde el portapapeles también.
Para obtener un desglose completo de los cmdlets, consulta la ayuda detallada:
Esto te proporcionará todos los diversos parámetros que puedes probar.
Source:
https://adamtheautomator.com/powershell-copy-to-clipboard/