Работа с буфером обмена в Powershell c Set-Clipboard


21 августа 2019


Работа с буфером обмена в Powershell c Set-Clipboard

Для работы с буфером обмена в Powershell 5 есть две команды Set-Clipboard и Get-Clipboard. Одна команда может вставить данные из буфера, а другая установить. 

Например так мы получим данные из буфера:

Get-Clipboard

Из дополнительных ключей есть Format, который выполнит форматирование буфера. Если мы выделили ряд файлов, то можем получить такой результат:

Get-Clipboard -Format FileDropList

Powershell Get-ClipBoard

Кроме FileDropList есть еще значения:

  • Text - по умолчанию
  • FileDropList - получение данных о файлах
  • Image - получение данных о картинке
  • Audio - получение данных об аудио

Например данные со свойством Image я не смог получить из файловой системы, только с картикне в интернете с браузера Edge:

Get-Clipboard -Format Image

Get-Clipboard Image

Остальные ключи у меня не работают или аналогично другому примеру только в каких-то специфичных условиях. Это ключ Raw, который должен игнорировать символы новой строки и TextFormatType, в котором указывается тип данных буфера. Ключ TextFormatType может принимать следующие значения (у меня они не работают):

  • Text
  • UnicodeText
  • Rtf
  • Html
  • CommaSeparatedValue

Противоположны ключ устанавливает значения в буфер. Так мы скопируем значение:

$var = "строка для копирования"
Set-Clipboard -Value $var

Можно к существующему буферу добавить еще значения:

$var2 = "строка для копирования2"
Set-Clipboard -Append $var2

Set-ClipBoard работа с буфером Powershell

По идеи мы можем скопировать содержимое все папки с ключом Path, но он, похоже, тоже не работает. Аналогичная ситуация с ключом -AsHtml, который допускает форматирование HTML, но если его установить, то ничего не получим.

 

Примеры работы с командами буфера обмена в Powershell

Очевидно, что примеров работы масса, но связана она в основном с рутинными действиями. Например нам нужно отсылать какую-то информацию через Powershell в определенном формате. У нас есть выбор - помещать все в файл и отсылать его, либо копировать как сплошной текст, либо отсылать в виде HTML. На примере ниже я копирую в буфер данные по процессам и преобразую в HTML. После этого я могу просто вставить эту часть в письмо:

Get-Process | Select Name,ID | Convertto-HTML | Set-Clipboard

 

Другой пример использования - это математические задачи, которые выполняются часто. Можно поместить в скрипт .ps1 и запускать его:

$result = 2 + (Get-Clipboard)
Set-Clipboard $result
Get-Clipboard

Set-Clipboard $result

...

Теги: #powershell


Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, преобретенного опыта и лучшие практики в системном администрировании и программировании.