Copy-Item
Копирует элемент из одного расположения в другое.
Синтаксис
Copy-Item
[-Path] <String[]>
[[-Destination] <String>]
[-Container]
[-Force]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-PassThru]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-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]
[-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]
[<CommonParameters>]
Copy-Item
[[-Destination] <string>]
-LiteralPath <string[]>
[-Container]
[-Force]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Recurse]
[-PassThru]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<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
содержит файлы в подкаталогах, эти подкаталоги копируются с нетронутыми деревьями файлов. По умолчанию параметру Container присвоено значение 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
.
Командлет копирует из D:\Folder001
папки в папку C:\Folder001_Copy
на удаленном компьютере, используя сведения о сеансе, хранящиеся test.log
в переменной $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
.
Командлет копирует из D:\Folder004
папки в папку C:\Folder004_Copy
на удаленном компьютере, используя сведения о сеансе, хранящиеся scriptingexample.ps1
в переменной $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
копирует из удаленной C:\MyRemoteData\
папки в локальную D:\MyLocalData
папку, используя сведения о сеансе, хранящиеся test.log
в переменной $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
. Если папка scripts содержит файлы во вложенных папках, эти вложенные папки копируются с нетронутыми деревьями файлов.
$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 , операция создает папку scripts, если она еще не существует. Если папка scripts содержит файлы во вложенных папках, эти вложенные папки копируются с нетронутыми деревьями файлов.
$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
параметра Container командлета задано значение $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
В отличие от , параметр Filter для Get-ChildItem
применяется к элементам, обнаруженным во время рекурсии. Это позволяет находить, фильтровать и затем копировать элементы рекурсивно.
Параметры
-Confirm
Запрос подтверждения перед выполнением командлета.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Container
Указывает, что этот командлет сохраняет объекты контейнера во время операции копирования. По умолчанию параметру Container присвоено значение True.
Type: | SwitchParameter |
Position: | Named |
Default value: | True |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Примечание
Этот параметр не поддерживается поставщиками, установленными с помощью PowerShell. Чтобы олицетворить другого пользователя или повысить уровень учетных данных при выполнении этого командлета, используйте Invoke-Command.
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Destination
Указывает путь к новому расположению. Значением по умолчанию является текущий каталог.
Чтобы переименовать копируемый элемент, укажите новое имя в значении параметра Destination .
Type: | String |
Position: | 1 |
Default value: | Current directory |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Exclude
Указывает один или несколько элементов пути или шаблонов, таких как "*.txt"
, для ограничения операций этого командлета. Значение этого параметра фильтруется по подстановочным знакам, соответствующим результату параметра Path , а не по конечным результатам. Этот параметр действует только в том случае, если путь указан с одним или несколькими подстановочными знаками. Так как этот параметр фильтрует только пути, разрешенные для параметра Path , он не фильтрует элементы, обнаруженные при рекурсии через дочерние папки с помощью параметра Recurse .
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
Указывает фильтр для указания параметра Path . Поставщик FileSystem — единственный установленный поставщик PowerShell, который поддерживает использование фильтров. Синтаксис языка фильтра FileSystem можно найти в about_Wildcards. Фильтры более эффективны, чем другие параметры, так как поставщик применяет их, когда командлет получает объекты, а не фильтрует объекты PowerShell после их извлечения.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Force
Указывает, что этот командлет копирует элементы, которые невозможно изменить, например копирование файла только для чтения или псевдонима.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FromSession
Это динамический параметр, доступный поставщиком FileSystem .
Укажите объект PSSession , из которого копируется удаленный файл. При использовании этого параметра параметры Path и LiteralPath ссылаются на локальный путь на удаленном компьютере.
Дополнительные сведения см. в разделе about_FileSystem_Provider.
Type: | PSSession |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Include
Указывает один или несколько элементов пути или шаблонов, таких как "*.txt"
, для ограничения операций этого командлета. Значение этого параметра фильтруется по подстановочным знакам, соответствующим результату параметра Path , а не по конечным результатам. Этот параметр действует только в том случае, если путь указан с одним или несколькими подстановочными знаками. Так как этот параметр фильтрует только пути, разрешенные для параметра Path , он не фильтрует элементы, обнаруженные при рекурсии через дочерние папки с помощью параметра Recurse .
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-LiteralPath
Указывает путь к одному или нескольким расположениям. Значение LiteralPath используется точно так же, как оно введено. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки предписывают PowerShell не интерпретировать какие-либо символы как escape-последовательности.
Дополнительные сведения см. в разделе about_Quoting_Rules.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-PassThru
Возвращает объект , представляющий элемент, с которым вы работаете. По умолчанию этот командлет не создает никаких выходных данных.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Указывает в виде массива строк путь к копируемой элементам. Можно использовать подстановочные знаки.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Recurse
Указывает, что этот командлет выполняет рекурсивное копирование.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ToSession
Это динамический параметр, доступный поставщиком FileSystem .
Укажите объект PSSession , в который копируется удаленный файл. При использовании этого параметра параметр Destination ссылается на локальный путь на удаленном компьютере.
Дополнительные сведения см. в разделе about_FileSystem_Provider.
Type: | PSSession |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
В этот командлет можно передать по конвейеру строку, содержащую путь.
Выходные данные
None
По умолчанию этот командлет не возвращает выходные данные.
При использовании параметра PassThru этот командлет возвращает объект, представляющий скопированный элемент.
Примечания
PowerShell включает следующие псевдонимы для Copy-Item
:
- Для всех платформ.
copy
cpi
- Windows:
cp
Этот командлет предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы вывести список поставщиков, доступных в данном сеансе, введите командлет Get-PSProvider
. Дополнительные сведения см. в разделе about_Providers.