Compartilhar via


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.

Esse 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 e entradas do Registro na unidade do Registro.

Esse cmdlet pode copiar e renomear itens no mesmo comando. Para renomear um item, insira o novo nome no valor do parâmetro Destino . 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 arquivo original não é excluído.

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 do diretório.

Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings" -Recurse

Observação

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 C:\Logfiles o conteúdo do diretório de origem e cria um novo diretório de destino. O novo diretório \Logs de 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

Observação

Se o Caminho incluir \*, todo o conteúdo do arquivo do diretório, incluindo as árvores de subdiretórios, será copiado para o novo diretório de destino. Por exemplo:

Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings\Logs" -Recurse

Exemplo 4: Copie um arquivo para o diretório especificado e renomeie 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 ele possa ser anexado com segurança às mensagens de Get-Widget.ps1 email.

Copy-Item "\\Server01\Share\Get-Widget.ps1" -Destination "\\Server12\ScriptArchive\Get-Widget.ps1.txt"

Exemplo 5: Copiar um arquivo 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 arquivo original não é excluído.

$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 $Session informações de sessão armazenadas na variável. Todas as 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: Copie 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 conteúdo da D:\Folder003 pasta para o C:\Folder003_Copy diretório no computador remoto usando as informações de 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: Copie um arquivo para um computador remoto e renomeie o arquivo

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 arquivo original não é excluído.

$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 arquivo 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 $Session informações de sessão armazenadas na variável. O arquivo original não é excluído.

$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 de sessão armazenadas na $Session variável. Se a pasta de 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: copiar 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 de 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 de 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 simples. 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 de pastas. 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 correspondam 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 a ex*. Observe que, sem recursão, a D:\temp\out\examples pasta é copiada, mas nenhum de seus conteúdos é 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 . A especificação de 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 a ex*. 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-Itemo , os filtros só se aplicam ao nível superior especificado pelo parâmetro Path . Em seguida, a recursão é aplicada a esses itens correspondentes.

Observação

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 a serem copiados recursivamente de um caminho especificado por curinga

Este exemplo mostra como limitar os arquivos copiados recursivamente de um caminho correspondente a curinga para outra pasta. O Exemplo 13 mostra que, como o parâmetro Include filtra apenas os caminhos resolvidos para um Caminho 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-Itemo .

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 se aplica aos itens descobertos durante a Copy-Itemrecursão. Isso permite que você localize, filtre e copie itens recursivamente.

Parâmetros

-Confirm

Solicita sua confirmação antes de executar o cmdlet.

Tipo:SwitchParameter
Aliases:cf
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga: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
Cargo:Named
Valor padrão:True
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Credential

Observação

Esse parâmetro não tem suporte de nenhum provedor instalado com o PowerShell. Para representar outro usuário ou elevar suas credenciais ao executar esse cmdlet, use Invoke-Command.

Tipo:PSCredential
Cargo:Named
Valor padrão:Current user
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-Destination

Especifica o caminho para o local de destino. O padrão é o diretório atual.

Para renomear o item que está sendo copiado, especifique um novo nome no valor do parâmetro Destino .

Tipo:String
Cargo:1
Valor padrão:Current directory
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-Exclude

Especifica um ou mais elementos ou padrões de caminho, como "*.txt", para limitar a operação desse cmdlet. O valor desse parâmetro é filtrado em relação ao resultado correspondente de curinga do parâmetro Path , não aos resultados finais. Esse parâmetro só é efetivo quando o Path é 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 meio de pastas filho com o parâmetro Recurse .

Tipo:String[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:True

-Filter

Especifica um filtro para qualificar o parâmetro Path . O provedor FileSystem é o único provedor do PowerShell instalado que dá suporte ao uso de filtros. Você pode encontrar a sintaxe da linguagem de filtro FileSystem em about_Wildcards. Os filtros são mais eficientes do que outros parâmetros, pois 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
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:True

-Force

Indica que esse cmdlet copia itens que não podem ser alterados de outra forma, como copiar um arquivo somente leitura ou alias.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-FromSession

Esse é 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 no computador remoto.

Para obter mais informações, consulte about_FileSystem_Provider.

Tipo:PSSession
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Include

Especifica um ou mais elementos ou padrões de caminho, como "*.txt", para limitar a operação desse cmdlet. O valor desse parâmetro é filtrado em relação ao resultado correspondente de curinga do parâmetro Path , não aos resultados finais. Esse parâmetro só é efetivo quando o Path é 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 meio de pastas filho com o parâmetro Recurse .

Tipo:String[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:True

-LiteralPath

Especifica um caminho para um ou mais locais. O valor de LiteralPath é usado exatamente como é digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. As aspas simples informam 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
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga: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
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga: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[]
Cargo:0
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:True

-Recurse

Indica que esse cmdlet faz uma cópia recursiva.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ToSession

Esse é 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 no computador remoto.

Para obter mais informações, consulte about_FileSystem_Provider.

Tipo:PSSession
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

Tipo:SwitchParameter
Aliases:wi
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

String

Você pode canalizar uma cadeia de caracteres que contém um caminho para esse cmdlet.

Saídas

None

Por padrão, esse cmdlet não retorna nenhuma saída.

PSObject

Quando você usa o parâmetro PassThru , esse cmdlet retorna um objeto que representa o item copiado.

Observações

O PowerShell inclui os seguintes aliases para Copy-Item:

  • Todas as plataformas:
    • copy
    • cpi
  • Windows:
    • cp

Esse cmdlet foi projetado para funcionar 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.