Працюємо з буфером обміну з командного рядка.
Про те, як користуватися буфером обміну, знає практично будь-який користувач Windows. Однак далеко не всі знають, що працювати з буфером можна не тільки з графічної оболонки, але і з командного рядка. Для цього є кілька різних способів.
Спосіб 1
Дістатися до буфера обміну можна за допомогою.Net класу Clipboard. Для того, щоб цей клас став доступний, спочатку завантажимо збірку:
Add-Type -AssemblyName PresentationCore
Після чого виведемо статичні методи класу командою:
[Windows .Clipboard] | Get-Member -Static
Назви методів інтуїтивно зрозумілі, наприклад set - додати в буфер, get - отримати з буфера і т.п. Для прикладу помістимо в буфер обміну текст:
[Windows.Clipboard] :: SetText ( "Hello")
Потім вважаємо текст з буфера:
[Windows.Clipboard] :: GetText ()
І очистимо буфер:
[Windows.Clipboard] :: Clear ()
Буфер може містити не тільки текст, а й деякі інші типи даних (зображення, аудіо та списки файлів).Як приклад додамо в буфер список файлів (filedroplist), а потім подивимося результат:
$ files = Get-ChildItem C: \ files
[Windows.Clipboard] :: SetFileDropList ($ files)
[Windows.Clipboard] :: GetFileDropList ()
При необхідності можна уточнити , який саме тип даних міститься в буфері. Наприклад додамо в нього текст:
[Windows.Clipboard] :: SetText ( "Hello")
І перевіримо, чи містить буфер текстові дані або список файлів:
[Windows.Clipboard] :: ContainsText ()
[Windows.Clipboard] :: ContainsFileDropList ()
Перша команда поверне True, друга - False, тобто в буфері знаходиться саме текст.
Спосіб 2
У п'ятій версії PowerShell для роботи з буфером обміну з'явилися спеціальні командлети Get-Clipboard і Set-Clipboard.Працювати з ними набагато простіше і зручніше, наприклад додамо в буфер текст і потім вважаємо його:
Set-Clipboard -Value "Hello"
Get-Clipboard
Ще одна корисна фіча нових командлетів - це можливість додати дані в буфер, що не затираючи вже наявні. Для додавання використовується Set-Clipboard з ключем Append.Для прикладу додамо ще текст і потім перевіримо вміст буфера:
Set-Clipboard -Value "World" -Append
Якщо в буфері знаходяться не простий текст, то при отриманні вмісту необхідно вказувати тип даних. Наприклад додамо в буфер список файлів і виведемо його:
Set-Clipboard -Path C: \ files \ *
Get-Clipboard -Format FileDropList
Спосіб 3
Ще можна працювати з буфером обміну через методи COM-об'єкта HtmlFile.Цей Cпособ не самий прямий, але цілком робочий. Для початку створюємо новий об'єкт:
$ clipboard = New-Object -ComObject "htmlfile"
Потім поміщаємо дані в змінну:
$ data = "Hello"
за допомогою методу setData додаємо дані в буфер:
$ clipboard.parentWindow.clipboardData.setData ( "text", $ data)
А за допомогою методу getData отримуємо його вміст:
$ clipboard.parentWindow.clipboardData.getData ( "text")
Спосіб 4
Ну і наостанок стара добра утиліта командного рядка clip.exe. З її допомогою можна помістити дані в буфер, наприклад передавши їх по конвеєру:
"Hello" | clip
Отримати назад з буфера дані утиліта не вміє, для цього доведеться скористатися одним з описаних вище методів.