При написании кода на PowerShell последнее, о чем вы могли подумать, – это буфер обмена Windows. Мы все, вероятно, знаем об известных сочетаниях клавиш Ctrl-C и Ctrl-V для копирования и вставки из буфера обмена, но это обычно делается через графический интерфейс. В наших сценариях PowerShell это не слишком полезно. Однако вы знали, что в PowerShell есть функция копирования в буфер обмена?
В этой статье я расскажу о том, как мы раньше получали функциональность копирования и вставки в PowerShell, а затем познакомлю вас с командлетами, которые предоставляет PowerShell начиная с версии 5.
До PowerShell v5 единственным способом копирования в буфер обмена было использование приложения clip.exe.
Старая-добрая clip.exe
Это приложение существует уже очень давно и работает надежно. Перенаправляя текст в clip.exe, вы можете скопировать текст в буфер обмена. Это работало, но всегда было неприятно, когда после каждого элемента добавлялся символ возврата каретки.

Кроме того, у нас не было простого способа извлекать информацию из буфера обмена. Мы были вынуждены вручную вставлять содержимое, когда оно находилось в буфере обмена. С помощью встроенных команд буфера обмена это больше не проблема!
Теперь у нас есть два командлета, которые гораздо лучше решают эту проблему: Get-Clipboard
и Set-Clipboard
.
Команда PowerShell Set-Clipboard
Set-Clipboard
заменяет clip.exe, но ведет себя точно так же. Теперь, вместо того чтобы перенаправлять вывод в clip, вы можете использовать Set-Clipboard
. Если вы сделаете это, вы заметите, что последний символ возврата каретки исчезает при вставке содержимого куда-либо.
Буфер обмена теперь содержит только строку Hello.
Еще одна полезная функция Set-Clipboard
– это параметр Append
. Традиционно буфер обмена мог хранить только один элемент. Теперь, используя параметр Append
с Set-Clipboard
, вы можете добавлять неограниченное количество элементов без удаления предыдущих.
Параметры Get-Clipboard
Даже если вы не используете Set-Clipboard
для копирования содержимого в буфер обмена, вы все равно можете использовать Get-Clipboard
, чтобы понять несколько различных типов, кроме простых строк. Например, если вы скопировали список файлов из Проводника и хотите получить этот список в своей консоли PowerShell, просто используйте параметр Format
и значение FileDropList
на Get-Clipboard
.
Вы увидите, что он понимает, что тип данных в буфере обмена – это список файлов. Кроме того, то же самое можно сделать с изображениями и другими сущностями.
Скопируйте изображение из другого приложения и используйте параметр -Format Image
для Get-Clipboard
, чтобы получить различные свойства изображения.
Манипуляция буфером обмена в PowerShell Core
К сожалению, команды Get-Clipboard
и Set-Clipboard
недоступны в PowerShell Core (v6+), но вы все равно можете использовать их с помощью модуля WindowsCompatibility. Модуль WindowsCompatibility позволяет вам использовать cmdlets Windows PowerShell в PowerShell Core.
После установки модуля WindowsCompatibility выполните команду Invoke-WinCommand
и оберните ссылки на Get-Clipboard
и Set-Clipboard
внутри нее.
Вы обнаружите, что можете читать и записывать в буфер обмена так же, как вы делали это в Windows PowerShell.
Резюме
Теперь вы можете делать гораздо больше с буфером обмена в PowerShell. Возможность копирования в буфер обмена с помощью PowerShell стала возможной благодаря командам Get-Clipboard
и Set-Clipboard
. Эти cmdlet-ы позволяют вам использовать PowerShell для копирования в буфер обмена и интеллектуальной вставки из буфера обмена.
Для полного описания cmdlet-ов ознакомьтесь с детальной справкой:
Это даст вам все возможные параметры, которые вы можете попробовать.
Source:
https://adamtheautomator.com/powershell-copy-to-clipboard/