Copy-Item
Copia um item de um local para outro.
Syntax
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>]
Description
O Copy-Item
cmdlet copia um item de um local para outro local 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 conteúdo de diretório para um diretório existente
Este exemplo copia o conteúdo do C:\Logfiles
diretório no diretório existente C:\Drawings
. O Logfiles
diretório não é copiado.
Se o Logfiles
diretório contiver arquivos em subdiretórios, esses subdiretórios serão copiados com as árvores de arquivos intactas. Por padrão, o parâmetro Contêiner é definido como True, que preserva a estrutura de diretório.
Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings" -Recurse
Observação
Se você precisar incluir o Logfiles
diretório na cópia, remova o \*
caminho.
Por exemplo:
Copy-Item -Path "C:\Logfiles" -Destination "C:\Drawings" -Recurse
Exemplo 3: Copiar diretório e conteúdo para um novo diretório
Este exemplo copia o conteúdo do diretório de origem C:\Logfiles
e cria um novo diretório de destino. O novo diretório de destino é \Logs
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 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 subdiretórias, 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 Get-Widget.ps1
para Get-Widget.ps1.txt
, portanto, ele pode ser anexado a mensagens de 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 nomeada $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 nomeada $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 o comutador Recurse .
A operação criará 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 nomeada $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 as árvores de arquivo intactas. A operação criará 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 arquivo para um computador remoto e renomear 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 nomeada $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. Como parte da operação de cópia, o comando altera o nome do item de scriptingexample.ps1
para scriptingexample_copy.ps1
, portanto, ele pode ser anexado a mensagens de email. 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 nomeada $Session
.
O Copy-Item
cmdlet copia test.log
da pasta remota C:\MyRemoteData\
para a local D:\MyLocalData
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 "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 nomeada $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 scripts contiver arquivos em subpastas, essas subpastas serão copiadas com as árvores de arquivo 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 nomeada $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 scripts contiver arquivos em subpastas, essas subpastas serão copiadas com as árvores de arquivo intactas.
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\scripts" -Destination "D:\MyLocalData\scripts" -FromSession $Session -Recurse
Exemplo 12: copiar arquivos de forma recursiva 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 em 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 da pasta. Observe que os arquivos com o mesmo nome são substituídos na pasta de destino.
Parâmetros
-Confirm
Solicita sua confirmação antes de executar o cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Container
Indica que esse cmdlet preserva objetos de contêiner durante a operação de cópia. Por padrão, o parâmetro Contêiner é definido como True.
Type: | SwitchParameter |
Position: | Named |
Default value: | True |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Observação
Não há suporte para esse parâmetro em nenhum provedor instalado com o PowerShell. Para representar outro usuário ou elevar suas credenciais ao executar este cmdlet, use Invoke-Command.
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | 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 Destination .
Type: | String |
Position: | 1 |
Default value: | Current directory |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Exclude
Especifica, como uma matriz de cadeia de caracteres, um item ou itens que esse cmdlet exclui na operação. O valor deste parâmetro qualifica o parâmetro Path. Insira um elemento ou padrão de caminho, como *.txt
. Caracteres curinga são permitidos. O parâmetro Excluir só é eficaz quando o comando inclui o conteúdo de um item, como C:\Windows\*
, em que o caractere curinga especifica o conteúdo do C:\Windows
diretório.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 no 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 ter o PowerShell filtrar os objetos depois que eles são recuperados.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Force
Indica que esse cmdlet copia itens que não podem ser alterados de outra forma, como copiar em um arquivo somente leitura ou alias.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FromSession
Especifica 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.
Type: | PSSession |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Include
Especifica, como uma matriz de cadeia de caracteres, um item ou itens que esse cmdlet inclui na operação. O valor deste parâmetro qualifica o parâmetro Path. Insira um elemento ou padrão de caminho, como "*.txt"
. Caracteres curinga são permitidos. O parâmetro Include só é eficaz quando o comando inclui o conteúdo de um item, como C:\Windows\*
, em que o caractere curinga especifica o conteúdo do C:\Windows
diretório.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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. 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.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Especifica, como uma matriz de cadeia de caracteres, o caminho para os itens a serem copiados. Caracteres curinga são permitidos.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Recurse
Indica que esse cmdlet faz uma cópia recursiva.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ToSession
Especifica o objeto PSSession ao qual um arquivo remoto está sendo copiado. Quando você usa esse parâmetro, o parâmetro De destino refere-se ao caminho local no computador remoto.
Type: | PSSession |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Você pode canalizar uma cadeia de caracteres que contém um caminho para este cmdlet.
Saídas
None or an object representing the copied item
Quando você usa o parâmetro PassThru , esse cmdlet retorna um objeto que representa o item copiado. Caso contrário, esse cmdlet não gerará nenhuma saída.
Observações
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.