Copy-Item
Копирует элемент из одного расположения в другое.
Синтаксис
Copy-Item
[-Path] <String[]>
[[-Destination] <String>]
[-Container]
[-Force]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-PassThru]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[-FromSession <PSSession>]
[-ToSession <PSSession>]
[<CommonParameters>]
Copy-Item
-LiteralPath <String[]>
[[-Destination] <String>]
[-Container]
[-Force]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-PassThru]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[-FromSession <PSSession>]
[-ToSession <PSSession>]
[<CommonParameters>]
Copy-Item
[-Path] <String[]>
[[-Destination] <String>]
[-Container]
[-Force]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-PassThru]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
Copy-Item
-LiteralPath <String[]>
[[-Destination] <String>]
[-Container]
[-Force]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-PassThru]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
Описание
Командлет Copy-Item
копирует элемент из одного расположения в другое расположение в том же пространстве имен.
Например, он может скопировать файл в папку, но он не может скопировать файл на диск сертификата.
Этот командлет не вырезает или не удаляет скопированные элементы. Определенные элементы, которые командлет может копировать, зависят от поставщика PowerShell, предоставляющего элемент. Например, он может копировать файлы и каталоги на диске файловой системы и разделах реестра и записях на диске реестра.
Этот командлет может копировать и переименовать элементы в той же команде. Чтобы переименовать элемент, введите новое имя в значение параметра Destination . Чтобы переименовать элемент и не скопировать его, используйте Rename-Item
командлет.
Примеры
Пример 1. Копирование файла в указанный каталог
В этом примере файл копируется в mar1604.log.txt
C:\Presentation
каталог. Исходный файл не удаляется.
Copy-Item "C:\Wabash\Logfiles\mar1604.log.txt" -Destination "C:\Presentation"
Пример 2. Копирование содержимого каталога в существующий каталог
В этом примере копируется содержимое C:\Logfiles
каталога в существующий C:\Drawings
каталог. Logfiles
Каталог не копируется.
Logfiles
Если каталог содержит файлы в подкаталогах, эти подкаталоги копируются с нетронутыми деревьями файлов. По умолчанию параметр контейнера имеет значение True, которое сохраняет структуру каталогов.
Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings" -Recurse
Примечание.
Если путь C:\Drawings
не существует, командлет копирует все файлы из Logfiles
папки в один файл C:\Drawings
.
Пример 3. Копирование каталога и содержимого в новый каталог
В этом примере копируется содержимое исходного C:\Logfiles
каталога и создается новый целевой каталог. Новый целевой каталог \Logs
создается в C:\Drawings
.
Чтобы включить имя исходного каталога, скопируйте его в существующий целевой каталог, как показано в примере 2. Или назовите новый целевой каталог тем же, что и исходный каталог.
Copy-Item -Path "C:\Logfiles" -Destination "C:\Drawings\Logs" -Recurse
Примечание.
Если путь содержит\*
, все содержимое файла каталога, включая подкаталоговые деревья, копируются в новый целевой каталог. Например:
Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings\Logs" -Recurse
Пример 4. Копирование файла в указанный каталог и переименование файла
В этом примере командлет используется Copy-Item
для копирования Get-Widget.ps1
скрипта \\Server01\Share
из каталога в \\Server12\ScriptArchive
каталог. В рамках операции копирования команда изменяет имя элемента на Get-Widget.ps1
Get-Widget.ps1.txt
, чтобы его можно было безопасно присоединить к сообщениям электронной почты.
Copy-Item "\\Server01\Share\Get-Widget.ps1" -Destination "\\Server12\ScriptArchive\Get-Widget.ps1.txt"
Пример 5. Копирование файла на удаленный компьютер
Сеанс создается на удаленном компьютере с именем Server01 с учетными данными Contoso\User01
и сохраняет результаты в переменной с именем$Session
.
Командлет копирует test.log
из D:\Folder001
папки в папку C:\Folder001_Copy
на удаленном компьютере, используя сведения о сеансе, хранящиеся в переменной $Session
Copy-Item
. Исходный файл не удаляется.
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "D:\Folder001\test.log" -Destination "C:\Folder001_Copy\" -ToSession $Session
Пример 6. Копирование папки на удаленный компьютер
Сеанс создается на удаленном компьютере с именем Server01 с учетными данными Contoso\User01
и сохраняет результаты в переменной с именем$Session
.
Командлет Copy-Item
копирует D:\Folder002
папку C:\Folder002_Copy
в каталог на удаленном компьютере с помощью сведений о сеансе, хранящихся в переменной $Session
. Любые вложенные папки или файлы не копируются без использования переключателя Recurse . Операция создает папку Folder002_Copy
, если она еще не существует.
$Session = New-PSSession -ComputerName "Server02" -Credential "Contoso\User01"
Copy-Item "D:\Folder002\" -Destination "C:\Folder002_Copy\" -ToSession $Session
Пример 7. Рекурсивно скопируйте все содержимое папки на удаленный компьютер.
Сеанс создается на удаленном компьютере с именем Server01 с учетными данными Contoso\User01
и сохраняет результаты в переменной с именем$Session
.
Командлет Copy-Item
копирует все содержимое из D:\Folder003
папки C:\Folder003_Copy
в каталог на удаленном компьютере с помощью сведений о сеансе, хранящихся в переменной $Session
. Вложенные папки копируются с нетронутыми деревьями файлов. Операция создает папку Folder003_Copy
, если она еще не существует.
$Session = New-PSSession -ComputerName "Server04" -Credential "Contoso\User01"
Copy-Item "D:\Folder003\" -Destination "C:\Folder003_Copy\" -ToSession $Session -Recurse
Пример 8. Копирование файла на удаленный компьютер и переименование файла
Сеанс создается на удаленном компьютере с именем Server01 с учетными данными Contoso\User01
и сохраняет результаты в переменной с именем$Session
.
Командлет копирует scriptingexample.ps1
из D:\Folder004
папки в папку C:\Folder004_Copy
на удаленном компьютере, используя сведения о сеансе, хранящиеся в переменной $Session
Copy-Item
. Исходный файл не удаляется.
$Session = New-PSSession -ComputerName "Server04" -Credential "Contoso\User01"
Copy-Item "D:\Folder004\scriptingexample.ps1" -Destination "C:\Folder004_Copy\scriptingexample_copy.ps1" -ToSession $Session
Пример 9. Копирование удаленного файла на локальный компьютер
Сеанс создается на удаленном компьютере с именем Server01 с учетными данными Contoso\User01
и сохраняет результаты в переменной с именем$Session
.
Командлет Copy-Item
копирует test.log
из удаленной C:\MyRemoteData\
папки в локальную D:\MyLocalData
папку, используя сведения о сеансе, хранящиеся в переменной $Session
. Исходный файл не удаляется.
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\test.log" -Destination "D:\MyLocalData\" -FromSession $Session
Пример 10. Копирование всего содержимого удаленной папки на локальный компьютер
Сеанс создается на удаленном компьютере с именем Server01 с учетными данными Contoso\User01
и сохраняет результаты в переменной с именем$Session
.
Командлет Copy-Item
копирует все содержимое из удаленной C:\MyRemoteData\scripts
папки в локальную D:\MyLocalData
папку, используя сведения о сеансе, хранящиеся в переменной $Session
. Если папка скриптов содержит файлы в вложенных папках, эти вложенные папки копируются с нетронутыми деревьями файлов.
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\scripts" -Destination "D:\MyLocalData\" -FromSession $Session
Пример 11. Рекурсивно скопируйте все содержимое удаленной папки на локальный компьютер.
Сеанс создается на удаленном компьютере с именем Server01 с учетными данными Contoso\User01
и сохраняет результаты в переменной с именем$Session
.
Командлет Copy-Item
копирует все содержимое из удаленной C:\MyRemoteData\scripts
папки в локальную D:\MyLocalData\scripts
папку, используя сведения о сеансе, хранящиеся в переменной $Session
. Так как используется параметр Recurse, операция создает папку скриптов, если она еще не существует. Если папка скриптов содержит файлы в вложенных папках, эти вложенные папки копируются с нетронутыми деревьями файлов.
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\scripts" -Destination "D:\MyLocalData\scripts" -FromSession $Session -Recurse
Пример 12. Рекурсивное копирование файлов из дерева папок в текущую папку
В этом примере показано, как скопировать файлы из многоуровневой структуры папок в одну плоскую папку.
Первые три команды показывают существующую структуру папок и содержимое двух файлов, оба имени file3.txt
.
PS C:\temp\test> (Get-ChildItem C:\temp\tree -Recurse).FullName
C:\temp\tree\subfolder
C:\temp\tree\file1.txt
C:\temp\tree\file2.txt
C:\temp\tree\file3.txt
C:\temp\tree\subfolder\file3.txt
C:\temp\tree\subfolder\file4.txt
C:\temp\tree\subfolder\file5.txt
PS C:\temp\test> Get-Content C:\temp\tree\file3.txt
This is file3.txt in the root folder
PS C:\temp\test> Get-Content C:\temp\tree\subfolder\file3.txt
This is file3.txt in the subfolder
PS C:\temp\test> Copy-Item -Path C:\temp\tree -Filter *.txt -Recurse -Container:$false
PS C:\temp\test> (Get-ChildItem . -Recurse).FullName
C:\temp\test\subfolder
C:\temp\test\file1.txt
C:\temp\test\file2.txt
C:\temp\test\file3.txt
C:\temp\test\file4.txt
C:\temp\test\file5.txt
PS C:\temp\test> Get-Content .\file3.txt
This is file3.txt in the subfolder
Для Copy-Item
командлета задан параметр $false
контейнера. Это приводит к копированию содержимого исходной папки, но не сохраняет структуру папок. Обратите внимание, что файлы с тем же именем перезаписываются в целевой папке.
Пример 13. Использование фильтров для копирования элементов без рекурсии
В этом примере показаны результаты с помощью параметра Include для выбора элементов, которые нужно скопировать.
В этом примере используется следующая структура папок, содержащая файлы для копирования:
D:\temp\tree\example.ps1
D:\temp\tree\example.txt
D:\temp\tree\examples\
D:\temp\tree\examples\example_1.txt
D:\temp\tree\examples\example_2.txt
D:\temp\tree\examples\subfolder\
D:\temp\tree\examples\subfolder\test.txt
В этом примере Copy-Item
вызывается подстановочный знак для параметров Path и Include . Указание подстановочного знака для параметра Path гарантирует, что он обрабатывает все файлы и папки, соответствующие D:\temp\tree\*
. Параметр Include фильтрует список элементов для обработки, ограничивая операцию только теми путями, которые начинаются с ex
.
PS D:\temp\test\out> Copy-Item -Path D:\temp\tree\* -Include ex*
PS D:\temp\test\out> (Get-ChildItem -Recurse).FullName
D:\temp\out\examples
D:\temp\out\example.ps1
D:\temp\out\example.txt
Параметр Include применяется к содержимому D:\temp\tree
папки для копирования всех элементов, соответствующих ex*
. Обратите внимание, что папка копируется без рекурсии D:\temp\out\examples
, но ни одно из его содержимого не копируется.
Пример 14. Использование фильтров для копирования элементов с рекурсией
В этом примере показаны результаты с помощью параметра Include для выбора элементов, которые нужно скопировать.
В этом примере используется следующая структура папок, содержащая файлы для копирования:
D:\temp\tree\example.ps1
D:\temp\tree\example.txt
D:\temp\tree\examples\
D:\temp\tree\examples\example_1.txt
D:\temp\tree\examples\example_2.txt
D:\temp\tree\examples\subfolder\
D:\temp\tree\examples\subfolder\test.txt
В этом примере Copy-Item
вызывается подстановочный знак для параметров Path и Include . Указание подстановочного знака для параметра Path гарантирует, что он обрабатывает все файлы и папки, соответствующие D:\temp\tree\*
. Параметр Include фильтрует список элементов для обработки, ограничивая операцию только теми путями, которые начинаются с ex
.
D:\temp\out> Copy-Item -Path D:\temp\tree\* -Include ex* -Recurse
D:\temp\out> (Get-ChildItem -Recurse).FullName
D:\temp\out\examples
D:\temp\out\example.ps1
D:\temp\out\example.txt
D:\temp\out\examples\subfolder
D:\temp\out\examples\example_1.txt
D:\temp\out\examples\example_2.txt
D:\temp\out\examples\subfolder\test.txt
Параметр Include применяется к содержимому D:\temp\tree
папки для копирования всех элементов, соответствующих ex*
. Обратите внимание, что при рекурсии D:\temp\out\examples
папка копируется вместе со всеми файлами и вложенными папками. Копия включает файлы, которые не соответствуют фильтру включения. При использовании Copy-Item
фильтры применяются только к верхнему уровню, указанному параметром Path . Затем рекурсия применяется к соответствующим элементам.
Примечание.
Поведение параметра Exclude аналогично описанному в этом примере, за исключением того, что операция ограничивается только теми путями, которые не соответствуют шаблону.
Пример 15. Ограничение файлов для рекурсивной копирования из указанного подстановочного знака пути
В этом примере показано, как ограничить файлы рекурсивно скопированными из пути сопоставления с подстановочными знаками в другую папку. В примере 13 показано, что, поскольку параметр Include фильтрует только пути, разрешенные для пути, указывающего путь, параметр Include не может использоваться для ограничения файлов рекурсивно скопированных из папки. Вместо этого можно использовать Get-ChildItem
для поиска элементов, в которые нужно скопировать и передать эти элементы Copy-Item
.
В этом примере используется следующая структура папок, содержащая файлы для копирования:
D:\temp\tree\example.ps1
D:\temp\tree\example.txt
D:\temp\tree\examples\
D:\temp\tree\examples\example_1.txt
D:\temp\tree\examples\example_2.txt
D:\temp\tree\examples\subfolder\
D:\temp\tree\examples\subfolder\test.txt
Чтобы скопировать все элементы, начинающиеся сex*
, используйте Get-ChildItem
параметры recurse и filter и переставьте результаты Copy-Item
в .
D:\temp\out> Get-ChildItem -Path D:\temp\tree -Recurse -Filter ex* | Copy-Item
D:\temp\out> (Get-ChildItem -Recurse).FullName
D:\temp\out\examples
D:\temp\out\example_1.txt
D:\temp\out\example_2.txt
D:\temp\out\example.ps1
D:\temp\out\example.txt
Copy-Item
В отличие от параметра фильтра, Get-ChildItem
который применяется к элементам, обнаруженным во время рекурсии. Это позволяет находить, фильтровать и копировать элементы рекурсивно.
Параметры
-Confirm
Запрос подтверждения перед выполнением командлета.
Тип: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Container
Указывает, что этот командлет сохраняет объекты контейнера во время операции копирования. По умолчанию параметр контейнера имеет значение True.
Тип: | SwitchParameter |
Position: | Named |
Default value: | True |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Credential
Примечание.
Этот параметр не поддерживается поставщиками, установленными с помощью PowerShell. Чтобы олицетворить другого пользователя или повысить свои учетные данные при выполнении этого командлета, используйте Invoke-Command.
Тип: | PSCredential |
Position: | Named |
Default value: | Current user |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Destination
Указывает путь к новому расположению. По умолчанию используется текущий каталог.
Чтобы переименовать скопированный элемент, укажите новое имя в значении параметра Destination .
Тип: | String |
Position: | 1 |
Default value: | Current directory |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Exclude
Задает один или несколько элементов пути или шаблонов, таких как "*.txt"
ограничение операции этого командлета. Значение этого параметра фильтрует результат сопоставления подстановочных знаков параметра Path , а не конечные результаты. Этот параметр действует только в том случае, если путь указан с одним или несколькими подстановочными знаками. Так как этот параметр фильтрует только пути, разрешенные для параметра Path , он не фильтрует элементы, обнаруженные при рекурсии через дочерние папки с параметром Recurse .
Тип: | String[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-Filter
Указывает фильтр для квалификации параметра Path . Поставщик FileSystem — единственный установленный поставщик PowerShell, поддерживающий использование фильтров. Синтаксис языка фильтра FileSystem можно найти в about_Wildcards. Фильтры более эффективны, чем другие параметры, так как поставщик применяет их, когда командлет получает объекты, а не фильтрует объекты после их получения.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-Force
Указывает, что этот командлет копирует элементы, которые не могут быть изменены, например копирование по файлу только для чтения или псевдониму.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-FromSession
Это динамический параметр, доступный поставщиком FileSystem .
Укажите объект PSSession, из которого копируется удаленный файл. При использовании этого параметра параметры Path и LiteralPath ссылаются на локальный путь на удаленном компьютере.
Дополнительные сведения см. в about_FileSystem_Provider.
Тип: | PSSession |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Include
Задает один или несколько элементов пути или шаблонов, таких как "*.txt"
ограничение операции этого командлета. Значение этого параметра фильтрует результат сопоставления подстановочных знаков параметра Path , а не конечные результаты. Этот параметр действует только в том случае, если путь указан с одним или несколькими подстановочными знаками. Так как этот параметр фильтрует только пути, разрешенные для параметра Path , он не фильтрует элементы, обнаруженные при рекурсии через дочерние папки с параметром Recurse .
Тип: | String[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-LiteralPath
Указывает путь к одному или нескольким расположениям. Значение LiteralPath используется точно так же, как оно типизированно. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки говорят PowerShell не интерпретировать какие-либо символы как escape-последовательности.
Дополнительные сведения см. в about_Quoting_Rules.
Тип: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-PassThru
Возвращает объект, представляющий элемент, с которым вы работаете. По умолчанию этот командлет не создает выходные данные.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Path
Указывает в виде строкового массива путь к элементам для копирования. Можно использовать подстановочные знаки.
Тип: | String[] |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | True |
-Recurse
Указывает, что этот командлет выполняет рекурсивную копию.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ToSession
Это динамический параметр, доступный поставщиком FileSystem .
Укажите объект PSSession, в который копируется удаленный файл. При использовании этого параметра целевой параметр ссылается на локальный путь на удаленном компьютере.
Дополнительные сведения см. в about_FileSystem_Provider.
Тип: | PSSession |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-UseTransaction
Включает команду в активную транзакцию. Этот параметр доступен только при выполнении транзакции. Дополнительные сведения см. в about_Transactions.
Тип: | SwitchParameter |
Aliases: | usetx |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Тип: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
В этот командлет можно передать по конвейеру строку, содержащую путь.
Выходные данные
None
По умолчанию этот командлет не возвращает выходные данные.
При использовании параметра PassThru этот командлет возвращает объект, представляющий скопированный элемент.
Примечания
Windows PowerShell включает следующие псевдонимы для Copy-Item
:
copy
cp
cpi
Этот командлет предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы вывести список поставщиков, доступных в данном сеансе, введите командлет Get-PSProvider
. Дополнительные сведения см. в about_Providers.
Связанные ссылки
PowerShell