Как вставить текст в Windows PowerShell

Обновлено: 04.07.2024

Мы используем копирование/вставку почти каждый день во многих приложениях, которыми пользуемся. Я даже использую Win + V намного чаще, так как Windows 10 представила новую функцию истории буфера обмена. Но как сделать то же самое в среде PowerShell, например отправить результат прямо в буфер обмена?

Хотя трюк с клипом все еще работает, есть гораздо лучший способ с помощью двух встроенных команд PowerShell, Set-Clipboard и Get-Clipboard.

Установить буфер обмена

Командлет Set-Clipboard заменяет clip.exe, но ведет себя так же и даже больше. Вы по-прежнему можете передать вывод, чтобы отправить результат в буфер обмена.

Поскольку Set-Clipboard имеет переключатель Append, вы можете добавить больше содержимого в текущий буфер обмена, не удаляя предыдущее.

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

Или напрямую скопируйте любой из элементов в буфер обмена, указав путь к нему.

Получить буфер обмена

Теперь давайте посмотрим, как извлечь содержимое из буфера обмена с помощью командлета Get-Clipboard.

Поскольку в буфер обмена копируются различные типы содержимого, нам потребуется использовать разные параметры формата, чтобы различать их.

Видите последний образец, который копирует папку в буфер обмена? Вам нужно будет использовать формат FileDropList, чтобы извлечь его из буфера обмена.

image - Как скопировать и вставить содержимое через буфер обмена в PowerShell

Как насчет изображения? Используйте формат изображения.

изображение 1 600x263 — как скопировать и вставить содержимое через буфер обмена в PowerShell

Таким образом, вы можете получить различные свойства изображения.

Как насчет очистки буфера обмена?

К сожалению, поскольку Set-Clipboard не принимает нулевое значение, мы все еще застряли по старинке.

Последнее примечание. Командлеты Set-Clipboard и Get-Clipboard доступны в PowerShell 5.0, но, к сожалению, могут быть недоступны в PowerShell Core или версии 6.

Все мы знаем, как выполнять простые операции копирования и вставки при использовании любого текстового редактора или панели поиска в Windows 10. Однако большинство пользователей задаются вопросом, как использовать эти команды при использовании PowerShell, поскольку сочетания клавиш для этих команд отключены. по умолчанию в PowerShell. В этой статье мы расскажем, как включить и использовать операции копирования и вставки в PowerShell в Windows 10.

Включение и использование копирования и вставки в PowerShell в Windows 10

Чтобы включить и использовать копирование и вставку в PowerShell в Windows 10, выполните следующие действия:

Введите power shell в поле поиска на панели задач и щелкните результат поиска, чтобы открыть окно PowerShell. Недавно открытое окно PowerShell можно увидеть на следующем изображении:

Открыть PowerShell Консоль

Теперь щелкните правой кнопкой мыши строку заголовка окна PowerShell, чтобы запустить каскадное меню, как показано на следующем рисунке:

Свойства PowerShell

В этом меню выберите параметр "Свойства", как показано на изображении выше.

После того, как вы щелкнете по нему, на экране появится окно "Свойства Windows PowerShell", как показано на рисунке ниже:

Свойства PowerShell Окно

Установите флажок, соответствующий полю "Включить комбинации клавиш Ctrl", как показано на рисунке выше.

Наконец нажмите кнопку ОК, чтобы сохранить настройки.

После выполнения всех этих шагов вы можете легко копировать и вставлять данные в PowerShell в Windows 10, используя комбинации клавиш Ctrl + C и Ctrl + V.

Заключение

Если вы будете следовать методу, описанному в этой статье, вы сможете легко включить параметры копирования и вставки в PowerShell при использовании Windows 10. После того, как вам удалось включить эти команды, вы можете удобно использовать их в любое время, как если бы вы их использовали. в обычном текстовом редакторе.

Мы не можем вставить текст из приложения, отличного от командной строки (CP) или Windows PowerShell (PS), в CP или PS.

  • Проблема возникает только на одной из нескольких виртуальных машин Windows Server 2008.
  • Сервер был полностью исправлен и перезапущен с тех пор, как впервые возникла проблема.
  • Копирование и вставка текста внутри CP/PS и между другими окнами CP/PS работает.
  • Копирование и вставка текста из CP/PS в другие приложения работает.
  • UAC никогда не включался.
  • Мы попытались устранить неполадки с помощью разных пользователей с правами администратора и без прав администратора.
  • Мы попытались выполнить чистую загрузку – проблема не связана с антивирусом.

Очевидно, что можно выполнить восстановление системы. Мы можем копировать и вставлять текст в PS ISE из приложений, что является приемлемым решением для пользователей PS. Однако это по-прежнему неприемлемо для пользователей CP.

Ответы

Просто хотел уточнить, что теперь система полностью перестроена со всеми приложениями, и это, похоже, решило проблему.

Все ответы

копировать и вставить не работает также в блокноте?

Вы пытались проверить sfc?

попробуйте выполнить командную строку с повышенными правами:

Каждая секунда на счету. Используйте ее. Отказ от ответственности. Эта публикация предоставляется КАК ЕСТЬ, без каких-либо гарантий или гарантий и не дает никаких прав.

Копирование и вставка работают в Блокноте, но не при копировании из Блокнота и вставке в CP/PS.

Спасибо за совет о "sfc /scannow". Я проверю это и вернусь к вам.

Мы попытались использовать вариант "Только проверка", чтобы проверить результаты, и обнаружили следующие поврежденные файлы:

C:/Windows/system32/wbem/Wdf010000Uninstall.mof
C:/Windows/system32/wbem/Wdf010000.mof
C:/Windows/PolicyDefinitions/inetres.admx
C :/Windows/PolicyDefinitions/en-US/InetRes.adml

Однако это те же самые файлы, которые были обнаружены как поврежденные на другом сервере, где копирование из блокнота в командную строку работает. На другом сервере мы также не исправили поврежденные файлы.

Мы проверили функциональность в режиме быстрого редактирования, но это не имеет значения, если он включен в «По умолчанию» и/или «Свойства».

Вы упомянули, что рассматриваемые серверы являются виртуальными машинами. Они на Hyper-V? Вы подключаетесь с помощью приложения для подключения к виртуальной машине Hyper-V? Если это так, это приложение не поддерживает копирование и вставку напрямую. Вы можете вставить текст буфера обмена в меню буфера обмена. Другой вариант — подключиться к серверу по RDP. Сеанс RDP поддерживает копирование и вставку.

У нас возникла проблема с сеансом RDP: Блокнот и CP/PS открыты на виртуальной машине. Я только что протестировал с помощью Hyper-V, и мы можем скопировать из NotePad на хосте и вставить в CP/PS на виртуальной машине. Однако пользователи, которым требуются эти функции для виртуальной машины, не должны иметь доступа к узлу.

Спасибо за подтверждение,

привет, я не уверен, что эта ссылка появилась в вашем поиске:

Каждая секунда на счету. Используйте ее. Отказ от ответственности. Эта публикация предоставляется КАК ЕСТЬ, без каких-либо гарантий или гарантий и не дает никаких прав.

Это правильно для копирования/вставки с хоста на виртуальную машину через Hyper-V. Однако наша проблема связана с копированием/вставкой на самой виртуальной машине. Это верно для сеанса RDP и соединения Hyper-V. Копирование из приложения, такого как Блокнот, и вставка в CP/PS не работает.

Привет, NuxCase, проблема в следующем:

На самой ВМ (в основном на гостевой ОС)

Возникла проблема с использованием буфера обмена?

Какая ОС установлена ​​на ВМ?

Каждая секунда на счету. Используйте ее. Отказ от ответственности. Эта публикация предоставляется КАК ЕСТЬ, без каких-либо гарантий или гарантий и не дает никаких прав.

Можете ли вы попробовать перезапустить rdpclip.exe?

В диспетчере задач завершите rdpclip.exe. И Файл>Новая задача (Выполнить)>rdpclip.exe

Гостевая ОС — Windows 2008.

Не приведет ли перезагрузка виртуальной машины к перезапуску rdpclip.exe? Мы перезагрузили его, так как проблема начала возникать. В любом случае будем тестить. Спасибо за совет!

Проблема остается даже после остановки и запуска rdpclip.exe.

  • Копирование из командной строки в сеансе RDP для другого сервера (та же ОС) и вставка в командную строку на затронутой виртуальной машине также не работает. Однако работает и другое направление.
  • Вот что я вижу: во время сеанса RDP с этим сервером я могу открыть Windows PowerShell, скопировать «C:/Users» и вставить «C:/Users» в командную строку. Когда я открываю Блокнот, набираю слова «Привет, мир!», копирую и вставляю в Блокнот, это тоже работает. Когда я пытаюсь вставить «Hello world» в PowerShell, командная строка остается пустой. Кажется, он распознает, что буфер обмена изменил значения с «C: / Users» на что-то, но не вставляет его. Возможно проблема с форматом?
  • Я вижу две записи реестра в HKEY_CURRENT_USER/Console на этом сервере, которых нет на других серверах: CurrentPage и FaceName. Их значения равны 0 и [пусто] соответственно. По-видимому, CurrentPage указывает на последнюю страницу, просмотренную в свойствах значка консоли панели управления. Он установлен на 0, что означает «Общие параметры.” FaceName указывает имя альтернативного шрифта командного окна. В настоящее время значение отсутствует, что означает, что система использует растровые шрифты. Стоит ли удалять эти записи или больше шансов сломать систему? РЕДАКТИРОВАТЬ: похоже, это не связано с проблемой.

Здравствуйте, NuxCase, если вы выполняете чистую загрузку гостевой ОС.

Работает ли буфер обмена так, как вы ожидаете?

Если это работает, возможно, какие-то сервисы, работающие в фоновом режиме, дают сбой.

Каждая секунда на счету. Используйте ее. Отказ от ответственности. Эта публикация предоставляется КАК ЕСТЬ, без каких-либо гарантий или гарантий и не дает никаких прав.

Мы попробовали выполнить чистую загрузку. Проблема остается.

Кроме того, что касается настроек реестра, я выяснил, как они были созданы и не имеют отношения к этой проблеме.

Мы обнаружили другие серверы 2008 года (не все), которые также подвержены этой проблеме. Мы не можем копировать и вставлять между консолями на разных серверах, затронутых этой проблемой. Кроме того, похоже, это влияет и на SQL Plus.

Я видел одну статью Microsoft, в которой рекомендовалось сбросить Internet Explorer при возникновении общих проблем с копированием и вставкой. Это также не решило проблему.

Я создал тестового пользователя и попытался скопировать из Блокнота в командную строку, но это не удалось.

Если я правильно понимаю, я замечал это много раз. Когда у вас есть что-то в буфере обмена и вы хотите вставить это в powershell или командную строку:

<р>1. Сначала нажмите на строку заголовка фактического окна PS или CMD.

<р>2. Затем курсор клавиатуры находится в реальном окне и мигает, просто введите что-нибудь, что угодно. Обычно я набираю «очистить», чтобы получить 100% фокус в окне PS или CMD.

<р>3. Затем щелкните правой кнопкой мыши в окне PS или CMD.

Я много раз замечал, что если я не набирал что-то в окне powershell перед вставкой чего-либо, это не работало, и мне приходилось повторно копировать элементы в буфер обмена.

Надеюсь, это поможет хотя бы в качестве временного решения.

В качестве теста попробуйте отключить режим QuickEdit (если он включен). Это позволит избежать некоторой потенциальной ошибки пользователя. (А именно, если вы щелкнете левой кнопкой мыши где-нибудь в окне консоли и войдете в режим «Выбрать», а затем нажмете Enter, вы только что перезаписали свой буфер обмена. Если вы затем попытаетесь вставить, вы, очевидно, увидите неправильные результаты.)< /p>

Я попробовал этот метод, но безуспешно. Спасибо!

QuickEdit отключен на сервере, но эта проблема остается. Спасибо!

привет, Nuxcase, вы пробовали этот метод ниже:

скопировать любой текст из блокнота

затем введите это в окне командной строки:

Каждая секунда на счету. Используйте ее. Отказ от ответственности. Эта публикация предоставляется КАК ЕСТЬ, без каких-либо гарантий или гарантий и не дает никаких прав.

Ввод cmd /k cmd /k Еще? Более? Более? Более?
'MZÉ$' не распознается как внутренняя или внешняя команда,
рабочая программа или пакетный файл.

C:\Windows\System32>processorArchitecture="amd64"
'processorArchitecture' не распознается как внутренняя или внешняя команда,
рабочая программа или пакетный файл.

C:\Windows\System32> name="Microsoft.Windows.Filesystem.Clip"
'имя' не распознается как внутренняя или внешняя команда,
действующая программа или пакетный файл.

C:\Windows\System32> type="win32"
Системе не удается найти указанный файл.

C:\Windows\System32> Clip — копирует данные в буфер обмена

C:\Windows\System32>
C:\Windows\System32>
C:\Windows\System32>
C:\Windows\System32>
C:\ Windows\System32> level="asInvoker"
'level' не распознается как внутренняя или внешняя команда,
рабочая программа или пакетный файл.

C:\Windows\System32> uiAccess="false"
'uiAccess' не распознается как внутренняя или внешняя команда,
рабочая программа или пакетный файл.

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

В этой статье я расскажу, как мы использовали функции копирования и вставки в PowerShell, а затем познакомлю вас с командлетами, которые PowerShell предоставляет, начиная с версии 5.

До PowerShell v5 единственным способом копирования в буфер обмена было использование приложения clip.exe.

Оглавление

Старая школа clip.exe

Это приложение существует уже давно и только что работало. Передав текст в clip.exe, вы можете скопировать текст в буфер обмена. Это работало, но всегда раздражало добавление возврата каретки после каждой записи.

Копирование в буфер обмена с помощью clip.exe

Функция копирования в буфер обмена PowerShell может заменить старый клип clip.exe

Кроме того, у нас не было простого способа извлечь информацию из буфера обмена. Мы были вынуждены вручную вставлять содержимое, как только оно было в буфере обмена. С родными командами буфера обмена этого больше нет!

Теперь у нас есть два командлета, которые намного лучше решают эту проблему; Get-Clipboard и Set-Clipboard .

Команда Powershell Set-Clipboard

Set-Clipboard заменяет clip.exe, но ведет себя точно так же. Теперь вместо того, чтобы направлять вывод в clip, вы можете использовать Set-Clipboard . Если вы сделаете это, вы заметите, что возврат каретки в конце исчез, когда вы куда-нибудь вставляете содержимое.

Буфер обмена теперь содержит только строку Hello.

Еще одной полезной функцией Set-Clipboard является параметр Append. Традиционно буфер обмена мог хранить только один элемент. Теперь, используя параметр Append с Set-Clipboard, вы можете добавлять неограниченное количество элементов, не удаляя предыдущие.

Получить параметры буфера обмена

Даже если вы не используете Set-Clipboard для копирования содержимого в буфер обмена, вы все равно можете использовать Get-Clipboard для понимания нескольких различных типов, отличных от простых строк. Например, если вы скопировали список файлов из Проводника и хотите получить этот список в своей консоли PowerShell, просто используйте параметр Format и значение FileDropList в Get- Буфер обмена.

Вы можете видеть, что он понимает, что тип данных в буфере обмена — это список файлов. Кроме того, вы можете сделать то же самое с изображениями и другими объектами.

Скопируйте изображение из другого приложения и используйте -Format Image для Get-Clipboard, чтобы получить различные свойства изображения.

Управление буфером обмена в PowerShell Core

К сожалению, команды Get-Clipboard и Set-Clipboard недоступны в PowerShell Core (v6+), но вы все равно можете использовать их с помощью модуля WindowsCompatibility. Модуль WindowsCompatibility позволяет использовать командлеты Windows PowerShell в PowerShell Core.

Установив модуль WindowsCompatibility, запустите Invoke-WinCommand и поместите в него ссылки Get-Clipboard и Set-Clipboard.

Вы обнаружите, что можете читать и писать в буфер обмена точно так же, как в Windows PowerShell.

Обзор

Сегодня с буфером обмена в PowerShell можно делать гораздо больше. Копирование PowerShell в буфер обмена стало возможным с помощью Get-Clipboard и Set-Clipboard. Эти командлеты позволяют использовать PowerShell для копирования в буфер обмена и интеллектуальной вставки из буфера обмена.

Полное описание командлетов см. в подробной справке:

Это даст вам все различные параметры, которые вы можете опробовать.

Ненавидите рекламу? Хотите поддержать писателя? Получите многие из наших руководств в виде руководства по ATA.

Ещё от ATA Learning & Partners

Резервное копирование Office 365 для чайников

Лучшее руководство по защите данных Microsoft Office 365. Изучите готовые функции безопасности.

Руководства ATA

ATA известна своими высококачественными письменными учебными пособиями в виде сообщений в блогах. Поддержите ATA с помощью электронных книг ATA Guidebook PDF, доступных в автономном режиме и без рекламы!

Читайте также: