- Copy-Item копирование файлов и папок из PowerShell
- Копирование файлов и каталогов
- Копирование с заменой и копирование с заменой read-only файлов
- Копирование с фильтрацией по шаблону
- Исключение файлов при копировании
- Копирование файлов на удаленный компьютер по сети
- Ключ PassThru
- Ключ Verbose
- Несколько полезных скриптов с Copy-Item
- Скопируйте и вставьте в Windows PowerShell
- 10 ответов 10
- клавиатура
- Скопируйте и вставьте в Windows PowerShell
- клавиатура
- How to Copy and Paste on PowerShell in Windows 10
- Enabling and Using Copy and Paste on PowerShell in Windows 10
- Conclusion
Copy-Item копирование файлов и папок из PowerShell
PowerShell командлет Copy-Item используется для копирования файлов между локальными, сетевыми каталогами или между компьютерами по сети через WinRM. Командлет Copy-Item предоставляет большое количество опций, которые можно использовать в разных сценариях копирования файлов и каталогов (по своим возможностям этот командлет почти не уступает утилите robocopy). Например:
- перезапись файлов (override)
- фильтрация по имени/шаблону
- исключение по имени/шаблону
- Verbose режим
- Копирование файлов с/на удаленные компьютеры
Начнем с простых примеров использования Copy-Item и будем переходить к более сложным.
Копирование файлов и каталогов
Чтобы скопировать один файл 1.txt из каталога C:\SourceFolder\ в F:\DestFolder\, выполните:
Copy-Item -Path «C:\SourceFolder\1.txt» -Destination «F:\DestFolder\1.txt»
Можно использовать сокращенный синтаксис командлета, пропустив указание параметров Path и Destination:
cpi «C:\SourceFolder\1.txt» «F:\DestFolder\1.txt»
Теперь скопируем каталог C:\SourceFolder\folder в F:\DestFolder\folder. В папке folder находится файл 1.txt. Обратите внимание что без ключа –Recurse, папка folder копируется без содержимого:
Copy-Item -Path «C:\SourceFolder\folder» -Destination «F:\DestFolder\folder» -Recurse
С помощью Copy-Item также можно просто объединить файлы из несколько директорий в одну (слияние директории), для этого нужно перечислить директории в ключе –Path:
Copy-Item -Path «C:\SourceFolder\*», «C:\SourceFolder2\*», «C:\SourceFolder3\*» -Destination «F:\DestFolder\»
Копирование с заменой и копирование с заменой read-only файлов
Copy-Item по умолчанию при копировании заменяет файлы в целевом каталоге. Никаких дополнительных параметров указывать не нужно. При копировании каталога, если нужно заменить каталог в целевой папке, нужно использовать ключ –Force, иначе будет ошибка “Элемент folder с указанным именем уже существует — DirectoryExists”.
Для перезаписи файла с атрибутом read-only, нужно использовать ключ -Force. Если его не использовать, вы получите ошибку “отказано в доступе по пути… CopyFileInfoItemUnauthorizedAccessError”.
Чтобы скопировать файл с перезаписью файла с read-only атрибутом используйте параметр Force.
Copy-Item -Path «C:\SourceFolder\1.txt» -Destination «F:\DestFolder\1.txt» -Force
Чтобы Copy-Item скопировал файлы из одной папки в другую без замены существующих файлов, можно использовать этот простой скрипт
Copy-Item (Join-Path «C:\SourceFolder\» «*») «F:\DestFolder\» -Exclude (Get-ChildItem «F:\DestFolder\») -Recurse
Этот скрипт скопирует все файлы и папки из C:\SourceFolder в F:\DestFolder без замены файлов уже существующих в F:\DestFolder
Копирование с фильтрацией по шаблону
С помощью Copy-Item можно скопировать файлы/директории выбранные с помощью wildcard символа * или с помощью символа ?. Также поддерживаются некоторые регулярные выражения
- * — обозначает любое количество любых символов
- ? – обозначает 1 любой символ
- [a-z], [0-9] – символы между a-z и цифры между 0 и 9
Для примера возьмём такую структуру файлов:
Выполним копирование командой:
Copy-Item -Path «C:\SourceFolder\fol*» -Destination «F:\DestFolder\»
Результат в F:\DestFolder\
Теперь чистим папку назначения и выполняем:
Copy-Item -Path «C:\SourceFolder\folder3» -Destination «F:\DestFolder\»
Папка без цифры в окончании не скопировалась, потому что folder2 подразумевает что после folder будет как минимум еще 1 символ между 0 и 3
Исключение файлов при копировании
С помощью ключа –Exclude можно исключить файлы при копировании. Например, следующай команда скопирует все файлы кроме файлов с расширением txt.
Copy-Item -Path «C:\SourceFolder\*» -Destination «F:\DestFolder\» -Recurse -Force -Exclude «*.txt»
Аналогичным же образом можно применить ключ –Include, например
Copy-Item -Path «C:\SourceFolder\*» -Destination «F:\DestFolder\» -Recurse -Force -Include «*.txt»
Скопирует только txt файлы. Хотя для простоты гораздо удобнее использовать при копировании вид -Path «C:\SourceFolder\*.txt» .
Копирование файлов на удаленный компьютер по сети
Copy-File может копировать не только по SMB протоколу, но и через WinRM (WSMan).
Создайте новую сессию с компьютером testnode1 и выполните копирование в её контексте:
$session = New-PSSession -ComputerName testnode1
Copy-Item -Path «C:\SourceFolder\*» -ToSession $session -Destination «C:\SourceFolder\» -Recurse -Force
Эта команда скопирует файлы с локального компьютера из директории C:\SourceFolder на компьютер testnode1 в C:\SourceFolder\.
Test-WSMan -ComputerName testnode1
Если WSMan не настроен, вы можете выполнить его быструю конфигурацию. Для этого откройте командную строку с правами администратора и выполните winrm quickconfig
Также можно копировать и через обычные сетевые SMB шары, для этого просто используйте UNC формат сетевого пути.
Copy-Item -Path «C:\SourceFolder\*» -Destination «\\testnode1\C$\copy_tutorial\»
Можно скопировать файл с удаленного компьютера. Принцип такой же, как и при копировании файлов на удаленный компьютер, за исключением параметра –ToSession, вместо него нужно использовать –FromSession:
$session = New-PSSession -ComputerName testnode1
Copy-Item -FromSession $session -Path «C:\SourceFolder\*» -Destination «F:\DestFolder\» -Recurse -Force
Эта команда скопирует содержимое папки C:\SourceFolder\ с компьютера testnode1 на локальный компьютер в директорию F:\DestFolder
Ключ PassThru
Командлет Copy-Item (как и многие другие командлеты PowerShell) не возвращает результатов в консоль. Параметр PassThru применяется скриптах, или для лог-файлов, когда нужно получить список скопированных файлов и работать с ним дальше. Рассмотрим пример
$items = Copy-Item -Path «C:\SourceFolder\*» –Destination «\\testnode1\C$\copy_tutorial\» -PassThru
Переменная $items будет содержать список скопированных файлов, с которым вы можете работать дальше.Это значит что вы можете напрямую работать с этими файлами. Например выполнив команду Remove-Item $items[0] , вы удалите директорию folder.
Ключ Verbose
При использовании ключа -Verbose вы получите подробный лог операций копирования. Например, вывод команды
Copy-Item -Path «C:\SourceFolder\*.txt» -Destination «F:\DestFolder\» -Recurse -Force -Verbose
Несколько полезных скриптов с Copy-Item
Скопировать только файлы:
Get-ChildItem «C:\SourceFolder» -File -Recurse | Copy-Item -Destination «F:\DestFolder»
Скопировать структуру папок, без файлов:
$path = Get-ChildItem «C:\SourceFolder» -Recurse | ?<$_.PsIsContainer -eq $true>
$dest = «F:\DestFolder\»
$parent = $path[0].Parent.Name
$path | foreach <
$_.FullName -match «$parent.+»
New-Item -ItemType directory ($dest + $Matches[0])
>
Copy-Item очень простой и удобный в использовании командлет PowerShell для выполнения операций копирования и перемещения файлов. В сочетании с другими инструментами PowerShell, Copy-Item также является мощным инструментом для написания скриптов.
Скопируйте и вставьте в Windows PowerShell
Как эффективно копировать и вставлять ввод и вывод в Windows PowerShell?
10 ответов 10
- Чтобы выделить текст в PowerShell с помощью мыши, просто выделите его как обычно.
- Чтобы скопировать выделенный текст в буфер обмена, вы должны либо нажать Enter, либо щелкнуть правой кнопкой мыши.
- Чтобы вставить в окно Powershell, щелкните правой кнопкой мыши.
клавиатура
alt + [пробел] , e , p
(Уточняю ответ ƬᴇcƬᴇιᴇ007 и Val)
Выбор / отметка: нажмите левую кнопку мыши, перетащите, отпустите.
Копировать: щелкните правой кнопкой мыши.
Вставить: с содержимым в буфере обмена, щелкните правой кнопкой мыши.
клавиатура
Активировать Марк: Alt + Пробел > e > k .
Выберите блок: перейдите (клавиши со стрелками, Page-down , Page-up , End , Pos1 ) к верхнему левому углу блока, нажмите и удерживайте Shift , перейдите к правому нижнему углу, отпустите Shift .
Копировать: выделив блок, нажмите Enter или Alt + Пробел > e > y .
Вставить: с содержимым в буфере обмена, Alt + Пробел > e > p .
Зависит от того, какой PowerShell вы используете. С более новым редактором сценариев PowerGUI или с PowerShell ISE (интегрированная среда сценариев) вырезание / вставка работает лучше:
- Чтобы обрезать, перетащите мышью текст, чтобы выделить, затем ^ C или щелкните правой кнопкой мыши, чтобы скопировать.
- Для вставки используйте ^ V
С более старой PowerShell:
- Чтобы обрезать, перетащите мышью текст, чтобы выделить, а затем введите, чтобы скопировать.
- Иногда вы можете нажать ^ C, чтобы скопировать, но это не всегда работает.
- Вы также можете перетащить, чтобы выделить, затем щелкнуть правой кнопкой мыши на панели верхнего окна и выбрать «Редактировать | копия.
- Чтобы вставить правой кнопкой мыши.
Хорошие ссылки для людей, изучающих PowerShell::
Лучший учебник по PowerShell, который я нашел на данный момент, находится здесь. Это входит в немного описания командной строки. К сожалению, некоторые классные вещи в оригинальной PowerShell, похоже, не работают в ISE, например, ctrl-home, чтобы удалить их в начале строки.
Некоторые различия между этими двумя PowerShells здесь.
Скопируйте и вставьте в Windows PowerShell
Как эффективно копировать и вставлять ввод и вывод в Windows PowerShell?
- Чтобы выделить текст в PowerShell с помощью мыши, просто выделите его как обычно.
- Чтобы скопировать выделенный текст в буфер обмена, вы должны либо нажать Enter, либо щелкнуть правой кнопкой мыши.
- Чтобы вставить в окно PowerShell, щелкните правой кнопкой мыши.
клавиатура
- Вставить: alt + [space] , e , p
Примечание. В текущих версиях Windows 10 Ctrl + C и Ctrl + V работают должным образом.
(Уточняю ответ ƬᴇcƬᴇιᴇ007 и Val)
Выбор / отметка: нажмите левую кнопку мыши, перетащите, отпустите.
Копировать: щелкните правой кнопкой мыши.
Вставить: с содержимым в буфере обмена, щелкните правой кнопкой мыши.
клавиатура
Активировать Марк: Alt + Space > e > k .
Выберите блок: Navigate (клавиши со стрелками, Page-down , Page-up , End , Pos1 ) в верхнем левом углу блока, нажмите и удерживайте Shift , перейдите в правом нижнем углу, выпуск Shift .
Копия: С выбран блок, либо удар Enter или Alt + Space > e > y .
Вставить: С содержанием в буфер обмена, Alt + Space > e > p .
Зависит от того, какой PowerShell вы используете. С новым редактором сценариев PowerGUI или с PowerShell ISE (интегрированная среда сценариев) вырезание / вставка работает лучше:
- Чтобы обрезать, перетащите мышью текст, чтобы выделить, затем ^ C или щелкните правой кнопкой мыши, чтобы скопировать.
- Для вставки используйте ^ V
С более старой PowerShell:
- Чтобы обрезать, перетащите мышью текст, чтобы выделить, а затем введите, чтобы скопировать.
- Иногда вы можете нажать ^ C, чтобы скопировать, но это не всегда работает.
- Вы также можете перетащить, чтобы выбрать, затем щелкнуть правой кнопкой мыши на панели верхнего окна и выбрать «Редактировать | копия.
- Чтобы вставить правой кнопкой мыши.
Хорошие ссылки для людей, изучающих PowerShell ::
Лучший учебник по PowerShell, который я нашел на данный момент, находится здесь . Это входит в немного описания командной строки. К сожалению, некоторые из классных вещей в оригинальной PowerShell, похоже, не работают в ISE, например ctrl-home, чтобы удалить их в начале строки.
Некоторые различия между этими двумя PowerShells здесь .
Начиная с Windows 10, Ctrl + C работает для копирования текста, а Ctrl + V работает для вставки. Вы также можете выбрать данные, используя Shift + Arrow (Влево / Вправо).
Стандартная консоль может использоваться в Windows 10 — PowerShell ISE все еще доступен, но не требуется для поддержки копирования / вставки.
Функции Powershell, как и в большинстве эмуляторов терминала (например, PuTTY), при выделении текста автоматически копируют его в буфер обмена, а щелчок правой кнопкой мыши вставляет содержимое клавиатуры в курсор.
How to Copy and Paste on PowerShell in Windows 10
All of us know how to perform the simple copy and paste operations while using any text editor or search bars in Windows 10. However, most of the users wonder how to use these commands while using PowerShell because the shortcut keys of these commands are by default disabled in PowerShell. In this article, we will explain to you the method through which you can enable and use the copy and paste operations on PowerShell in Windows 10.
Enabling and Using Copy and Paste on PowerShell in Windows 10
In order to enable and use copy and paste on PowerShell in Windows 10, you will need to perform the following steps:
Type power shell in the search section of your taskbar and click on the search result to launch the power shell window. The newly opened PowerShell window is shown in the following image:
Now right click on the title bar of your PowerShell window in order to launch a cascading menu as shown in the image below:
Click on the Properties option from this menu as highlighted in the image shown above.
As soon as you will click on it, the Windows PowerShell Properties window will appear on your screen as shown in the following image:
Check the checkbox corresponding to the field saying, “Enable Ctrl key shortcuts” as highlighted in the image shown above.
Finally, click on the OK button in order to save your settings.
After performing all these steps, you will be able to copy and paste on PowerShell in Windows 10 simply by using the keyboard shortcuts Ctrl + C and Ctrl + V respectively.
Conclusion
By following the method discussed in this article, you can easily enable the copy and paste options in PowerShell while using Windows 10. Once you manage to enable these commands, then you can conveniently use them any time you want just as if you would have used them in any normal text editor.