Copy-Item
Copia um item de um local para outro.
Sintaxe
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>]
Description
O Copy-Item
cmdlet copia um item de um local para outro no mesmo namespace.
Por exemplo, ele pode copiar um arquivo para uma pasta, mas não pode copiar um arquivo para uma unidade de certificado.
Este cmdlet não corta nem exclui os itens que estão sendo copiados. Os itens específicos que o cmdlet pode copiar dependem do provedor do PowerShell que expõe o item. Por exemplo, ele pode copiar arquivos e diretórios em uma unidade do sistema de arquivos e chaves de registro e entradas na unidade de registro.
Este cmdlet pode copiar e renomear itens no mesmo comando. Para renomear um item, insira o novo nome no valor do parâmetro Destination . Para renomear um item e não copiá-lo, use o Rename-Item
cmdlet.
Exemplos
Exemplo 1: Copiar um arquivo para o diretório especificado
Este exemplo copia o mar1604.log.txt
arquivo para o C:\Presentation
diretório. O ficheiro original não é eliminado.
Copy-Item "C:\Wabash\Logfiles\mar1604.log.txt" -Destination "C:\Presentation"
Exemplo 2: Copiar o conteúdo do diretório para um diretório existente
Este exemplo copia o C:\Logfiles
conteúdo do diretório para o diretório existente C:\Drawings
. O Logfiles
diretório não é copiado.
Se o Logfiles
diretório tiver arquivos em subdiretórios, esses subdiretórios serão copiados com suas árvores de arquivos intactas. Por padrão, o parâmetro Container é definido como True, o que preserva a estrutura de diretórios.
Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings" -Recurse
Nota
Se o caminho C:\Drawings
não existir, o cmdlet copiará todos os arquivos da árvore de Logfiles
pastas em uma única pasta C:\Drawings
, substituindo todos os arquivos com o mesmo nome.
Exemplo 3: Copiar diretório e conteúdo para um novo diretório
Este exemplo copia o C:\Logfiles
conteúdo do diretório de origem e cria um novo diretório de destino. O novo diretório de \Logs
destino é criado em C:\Drawings
.
Para incluir o nome do diretório de origem, copie para um diretório de destino existente, conforme mostrado no Exemplo 2. Ou, nomeie o novo diretório de destino com o mesmo que o diretório de origem.
Copy-Item -Path "C:\Logfiles" -Destination "C:\Drawings\Logs" -Recurse
Nota
Se o caminho incluir \*
, todo o conteúdo do arquivo do diretório, incluindo as árvores de subdiretório, será copiado para o novo diretório de destino. Por exemplo:
Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings\Logs" -Recurse
Exemplo 4: Copiar um arquivo para o diretório especificado e renomear o arquivo
Este exemplo usa o Copy-Item
cmdlet para copiar o Get-Widget.ps1
script do \\Server01\Share
diretório para o \\Server12\ScriptArchive
diretório. Como parte da operação de cópia, o comando altera o nome do item de para Get-Widget.ps1.txt
, para que possa ser anexado com segurança às mensagens de Get-Widget.ps1
e-mail.
Copy-Item "\\Server01\Share\Get-Widget.ps1" -Destination "\\Server12\ScriptArchive\Get-Widget.ps1.txt"
Exemplo 5: Copiar um ficheiro para um computador remoto
Uma sessão é criada para o computador remoto chamado Server01 com a credencial de Contoso\User01
e armazena os resultados na variável chamada $Session
.
O Copy-Item
cmdlet copia test.log
da D:\Folder001
pasta para a C:\Folder001_Copy
pasta no computador remoto usando as informações de sessão armazenadas na $Session
variável. O ficheiro original não é eliminado.
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "D:\Folder001\test.log" -Destination "C:\Folder001_Copy\" -ToSession $Session
Exemplo 6: Copiar uma pasta para um computador remoto
Uma sessão é criada para o computador remoto chamado Server01 com a credencial de Contoso\User01
e armazena os resultados na variável chamada $Session
.
O Copy-Item
cmdlet copia a D:\Folder002
pasta para o C:\Folder002_Copy
diretório no computador remoto usando as informações de sessão armazenadas na $Session
variável. Quaisquer subpastas ou arquivos não são copiados sem usar a opção Recurse . A operação cria a Folder002_Copy
pasta se ela ainda não existir.
$Session = New-PSSession -ComputerName "Server02" -Credential "Contoso\User01"
Copy-Item "D:\Folder002\" -Destination "C:\Folder002_Copy\" -ToSession $Session
Exemplo 7: Copiar recursivamente todo o conteúdo de uma pasta para um computador remoto
Uma sessão é criada para o computador remoto chamado Server01 com a credencial de Contoso\User01
e armazena os resultados na variável chamada $Session
.
O Copy-Item
cmdlet copia todo o D:\Folder003
conteúdo da pasta para o C:\Folder003_Copy
diretório no computador remoto usando as informações da sessão armazenadas na $Session
variável. As subpastas são copiadas com suas árvores de arquivos intactas. A operação cria a Folder003_Copy
pasta se ela ainda não existir.
$Session = New-PSSession -ComputerName "Server04" -Credential "Contoso\User01"
Copy-Item "D:\Folder003\" -Destination "C:\Folder003_Copy\" -ToSession $Session -Recurse
Exemplo 8: Copiar um ficheiro para um computador remoto e, em seguida, mudar o nome do ficheiro
Uma sessão é criada para o computador remoto chamado Server01 com a credencial de Contoso\User01
e armazena os resultados na variável chamada $Session
.
O Copy-Item
cmdlet copia scriptingexample.ps1
da D:\Folder004
pasta para a C:\Folder004_Copy
pasta no computador remoto usando as informações de sessão armazenadas na $Session
variável. O ficheiro original não é eliminado.
$Session = New-PSSession -ComputerName "Server04" -Credential "Contoso\User01"
Copy-Item "D:\Folder004\scriptingexample.ps1" -Destination "C:\Folder004_Copy\scriptingexample_copy.ps1" -ToSession $Session
Exemplo 9: Copiar um ficheiro remoto para o computador local
Uma sessão é criada para o computador remoto chamado Server01 com a credencial de Contoso\User01
e armazena os resultados na variável chamada $Session
.
O Copy-Item
cmdlet copia test.log
da pasta remota C:\MyRemoteData\
para a pasta local D:\MyLocalData
usando as informações de sessão armazenadas na $Session
variável. O ficheiro original não é eliminado.
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\test.log" -Destination "D:\MyLocalData\" -FromSession $Session
Exemplo 10: Copiar todo o conteúdo de uma pasta remota para o computador local
Uma sessão é criada para o computador remoto chamado Server01 com a credencial de Contoso\User01
e armazena os resultados na variável chamada $Session
.
O Copy-Item
cmdlet copia todo o conteúdo da pasta remota C:\MyRemoteData\scripts
para a pasta local D:\MyLocalData
usando as informações da sessão armazenadas na $Session
variável. Se a pasta scripts tiver arquivos em subpastas, essas subpastas serão copiadas com suas árvores de arquivos intactas.
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\scripts" -Destination "D:\MyLocalData\" -FromSession $Session
Exemplo 11: Copie recursivamente todo o conteúdo de uma pasta remota para o computador local
Uma sessão é criada para o computador remoto chamado Server01 com a credencial de Contoso\User01
e armazena os resultados na variável chamada $Session
.
O Copy-Item
cmdlet copia todo o conteúdo da pasta remota C:\MyRemoteData\scripts
para a pasta local D:\MyLocalData\scripts
usando as informações da sessão armazenadas na $Session
variável. Como o parâmetro Recurse é usado, a operação cria a pasta de scripts se ela ainda não existir. Se a pasta scripts tiver arquivos em subpastas, essas subpastas serão copiadas com suas árvores de arquivos intactas.
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\scripts" -Destination "D:\MyLocalData\scripts" -FromSession $Session -Recurse
Exemplo 12: Copiar recursivamente arquivos de uma árvore de pastas para a pasta atual
Este exemplo mostra como copiar arquivos de uma estrutura de pastas de vários níveis para uma única pasta plana.
Os três primeiros comandos mostram a estrutura de pastas existente e o conteúdo de dois arquivos, ambos os nomes 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
O Copy-Item
cmdlet tem o parâmetro Container definido como $false
. Isso faz com que o conteúdo da pasta de origem seja copiado, mas não preserva a estrutura da pasta. Observe que os arquivos com o mesmo nome são substituídos na pasta de destino.
Exemplo 13: Usando filtros para copiar itens sem recursão
Este exemplo mostra os resultados usando o parâmetro Include para selecionar os itens a serem copiados.
Este exemplo usa a seguinte estrutura de pastas que contém os arquivos a serem copiados:
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
Neste exemplo, Copy-Item
é chamado com um curinga para os parâmetros Path e Include . Especificar um curinga para o parâmetro Path garante que ele processe todos os arquivos e pastas que correspondem ao D:\temp\tree\*
. O parâmetro Include filtra a lista de itens a serem processados, limitando a operação apenas aos caminhos que começam com 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
O parâmetro Include é aplicado ao conteúdo da D:\temp\tree
pasta para copiar todos os itens que correspondem ex*
ao . Observe que, sem recursão, a D:\temp\out\examples
pasta é copiada, mas nenhum de seu conteúdo é copiado.
Exemplo 14: Usando filtros para copiar itens com recursão
Este exemplo mostra os resultados usando o parâmetro Include para selecionar os itens a serem copiados.
Este exemplo usa a seguinte estrutura de pastas que contém os arquivos a serem copiados:
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
Neste exemplo, Copy-Item
é chamado com um curinga para os parâmetros Path e Include . Especificar um curinga para o parâmetro Path garante que ele processe todos os arquivos e pastas que correspondem ao D:\temp\tree\*
. O parâmetro Include filtra a lista de itens a serem processados, limitando a operação apenas aos caminhos que começam com 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
O parâmetro Include é aplicado ao conteúdo da D:\temp\tree
pasta para copiar todos os itens que correspondem ex*
ao . Observe que, com a recursão, a pasta é copiada D:\temp\out\examples
junto com todos os arquivos e subpastas. A cópia inclui arquivos que não correspondem ao filtro de inclusão. Ao usar Copy-Item
o , os filtros só se aplicam ao nível superior especificado pelo parâmetro Path . Em seguida, a recursão é aplicada a esses itens correspondentes.
Nota
O comportamento do parâmetro Exclude é o mesmo descrito neste exemplo, exceto que ele limita a operação apenas aos caminhos que não correspondem ao padrão.
Exemplo 15: Limitar os arquivos para copiar recursivamente de um caminho especificado por curinga
Este exemplo mostra como limitar os arquivos copiados recursivamente de um caminho de correspondência curinga para outra pasta. O Exemplo 13 mostra que, como o parâmetro Include filtra apenas os caminhos resolvidos para um Path que especifica curinga, o parâmetro Include não pode ser usado para limitar os arquivos copiados recursivamente de uma pasta. Em vez disso, você pode usar Get-ChildItem
para localizar os itens que deseja copiar e passar esses itens para Copy-Item
.
Este exemplo usa a seguinte estrutura de pastas que contém os arquivos a serem copiados:
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
Para copiar todos os itens que começam com ex*
, use Get-ChildItem
com os parâmetros Recurse e Filter e canalize os resultados para 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
Ao contrário do , o parâmetro Filter for Get-ChildItem
aplica-se aos itens descobertos durante a Copy-Item
recursão. Isso permite que você localize, filtre e copie itens recursivamente.
Parâmetros
-Confirm
Solicita a sua confirmação antes de executar o cmdlet.
Tipo: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Container
Indica que esse cmdlet preserva objetos de contêiner durante a operação de cópia. Por padrão, o parâmetro Container é definido como True.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | True |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Credential
Nota
Esse parâmetro não é suportado por nenhum provedor instalado com o PowerShell. Para representar outro usuário ou elevar suas credenciais ao executar esse cmdlet, use Invoke-Command.
Tipo: | PSCredential |
Position: | Named |
Default value: | Current user |
Necessário: | False |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-Destination
Especifica o caminho para o novo local. O padrão é o diretório atual.
Para renomear o item que está sendo copiado, especifique um novo nome no valor do parâmetro Destination .
Tipo: | String |
Position: | 1 |
Default value: | Current directory |
Necessário: | False |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-Exclude
Especifica um ou mais elementos ou padrões de caminho, como "*.txt"
, para limitar a operação deste cmdlet. O valor desse parâmetro filtra em relação ao resultado de correspondência de curinga do parâmetro Path , não aos resultados finais. Esse parâmetro só é efetivo quando o caminho é especificado com um ou mais curingas. Como esse parâmetro filtra apenas os caminhos resolvidos para o parâmetro Path , ele não filtra nenhum item descoberto ao recursar por pastas filhas com o parâmetro Recurse .
Tipo: | String[] |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | True |
-Filter
Especifica um filtro para qualificar o parâmetro Path . O provedor FileSystem é o único provedor PowerShell instalado que oferece suporte ao uso de filtros. Você pode encontrar a sintaxe para a linguagem de filtro FileSystem em about_Wildcards. Os filtros são mais eficientes do que outros parâmetros, porque o provedor os aplica quando o cmdlet obtém os objetos em vez de fazer com que o PowerShell filtre os objetos depois que eles são recuperados.
Tipo: | String |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | True |
-Force
Indica que esse cmdlet copia itens que não podem ser alterados de outra forma, como copiar sobre um arquivo somente leitura ou alias.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-FromSession
Este é um parâmetro dinâmico disponibilizado pelo provedor FileSystem.
Especifique o objeto PSSession do qual um arquivo remoto está sendo copiado. Quando você usa esse parâmetro, os parâmetros Path e LiteralPath referem-se ao caminho local na máquina remota.
Para obter mais informações, consulte about_FileSystem_Provider.
Tipo: | PSSession |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Include
Especifica um ou mais elementos ou padrões de caminho, como "*.txt"
, para limitar a operação deste cmdlet. O valor desse parâmetro filtra em relação ao resultado de correspondência de curinga do parâmetro Path , não aos resultados finais. Esse parâmetro só é efetivo quando o caminho é especificado com um ou mais curingas. Como esse parâmetro filtra apenas os caminhos resolvidos para o parâmetro Path , ele não filtra nenhum item descoberto ao recursar por pastas filhas com o parâmetro Recurse .
Tipo: | String[] |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | True |
-LiteralPath
Especifica um caminho para um ou mais locais. O valor de LiteralPath é usado exatamente como é digitado. Nenhum caractere é interpretado como curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. Aspas simples dizem ao PowerShell para não interpretar nenhum caractere como sequências de escape.
Para obter mais informações, consulte about_Quoting_Rules.
Tipo: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-PassThru
Retorna um objeto que representa o item com o qual você está trabalhando. Por padrão, esse cmdlet não gera nenhuma saída.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Path
Especifica, como uma matriz de cadeia de caracteres, o caminho para os itens a serem copiados. Caracteres curinga são permitidos.
Tipo: | String[] |
Position: | 0 |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | True |
-Recurse
Indica que esse cmdlet faz uma cópia recursiva.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-ToSession
Este é um parâmetro dinâmico disponibilizado pelo provedor FileSystem.
Especifique o objeto PSSession para o qual um arquivo remoto está sendo copiado. Quando você usa esse parâmetro, o parâmetro Destination refere-se ao caminho local na máquina remota.
Para obter mais informações, consulte about_FileSystem_Provider.
Tipo: | PSSession |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-WhatIf
Apresenta o que aconteceria mediante a execução do cmdlet. O cmdlet não é executado.
Tipo: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
Entradas
Você pode canalizar uma cadeia de caracteres que contenha um caminho para esse cmdlet.
Saídas
None
Por padrão, esse cmdlet não retorna nenhuma saída.
Quando você usa o parâmetro PassThru , esse cmdlet retorna um objeto que representa o item copiado.
Notas
O PowerShell inclui os seguintes aliases para Copy-Item
:
- Todas as plataformas:
copy
cpi
- Windows:
cp
Este cmdlet foi projetado para trabalhar com os dados expostos por qualquer provedor. Para listar os provedores disponíveis em sua sessão, digite Get-PSProvider
. Para obter mais informações, consulte about_Providers.