Share via


Copy-Item

Copie un élément d’un emplacement vers un autre.

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>]
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

L’applet Copy-Item de commande copie un élément d’un emplacement vers un autre dans le même espace de noms. Par instance, il peut copier un fichier dans un dossier, mais il ne peut pas copier un fichier sur un lecteur de certificat.

Cette applet de commande ne coupe ni ne supprime les éléments en cours de copie. Les éléments particuliers que l’applet de commande peut copier dépendent du fournisseur PowerShell qui expose l’élément. Par instance, il peut copier des fichiers et des répertoires dans un lecteur de système de fichiers, ainsi que des clés et des entrées de Registre dans le lecteur du Registre.

Cette applet de commande peut copier et renommer des éléments dans la même commande. Pour renommer un élément, entrez le nouveau nom dans la valeur du paramètre Destination . Pour renommer un élément et ne pas le copier, utilisez l’applet de Rename-Item commande .

Exemples

Exemple 1 : Copier un fichier dans le répertoire spécifié

Cet exemple montre comment copier le mar1604.log.txt fichier dans le C:\Presentation répertoire. Le fichier d’origine n’est pas supprimé.

Copy-Item "C:\Wabash\Logfiles\mar1604.log.txt" -Destination "C:\Presentation"

Exemple 2 : Copier le contenu du répertoire dans un répertoire existant

Cet exemple copie le contenu du C:\Logfiles répertoire dans le répertoire existant C:\Drawings . Le Logfiles répertoire n’est pas copié.

Si le répertoire contient des Logfiles fichiers dans des sous-répertoires, ces sous-répertoires sont copiés avec leurs arborescences de fichiers intactes. Par défaut, le paramètre Container est défini sur True, ce qui préserve la structure de répertoires.

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

Notes

Si le chemin d’accès C:\Drawings n’existe pas, l’applet de commande copie tous les fichiers du Logfiles dossier dans un seul fichier C:\Drawings.

Exemple 3 : Copier le répertoire et le contenu dans un nouveau répertoire

Cet exemple montre comment copier le contenu du C:\Logfiles répertoire source et créer un répertoire de destination. Le nouveau répertoire \Logs de destination est créé dans C:\Drawings.

Pour inclure le nom du répertoire source, copiez dans un répertoire de destination existant, comme illustré dans l’exemple 2. Vous pouvez également nommer le nouveau répertoire de destination avec le même nom que le répertoire source.

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

Notes

Si le chemin d’accès inclut \*, tout le contenu du fichier du répertoire, y compris les arborescences du sous-répertoire, est copié dans le nouveau répertoire de destination. Par exemple :

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

Exemple 4 : Copier un fichier dans le répertoire spécifié et renommer le fichier

Cet exemple utilise l’applet Copy-Item de commande pour copier le Get-Widget.ps1 script du \\Server01\Share répertoire vers le \\Server12\ScriptArchive répertoire. Dans le cadre de l’opération de copie, la commande remplace le nom de l’élément par Get-Widget.ps1Get-Widget.ps1.txt, afin qu’il puisse être attaché aux messages électroniques en toute sécurité.

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

Exemple 5 : Copier un fichier sur un ordinateur distant

Une session est créée sur l’ordinateur distant nommé Server01 avec les informations d’identification de Contoso\User01 et stocke les résultats dans la variable nommée $Session.

L’applet Copy-Item de commande copie test.log du D:\Folder001 dossier vers le C:\Folder001_Copy dossier sur l’ordinateur distant à l’aide des informations de session stockées dans la $Session variable. Le fichier d’origine n’est pas supprimé.

$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "D:\Folder001\test.log" -Destination "C:\Folder001_Copy\" -ToSession $Session

Exemple 6 : Copier un dossier sur un ordinateur distant

Une session est créée sur l’ordinateur distant nommé Server01 avec les informations d’identification de Contoso\User01 et stocke les résultats dans la variable nommée $Session.

L’applet Copy-Item de commande copie le D:\Folder002 dossier dans le C:\Folder002_Copy répertoire sur l’ordinateur distant à l’aide des informations de session stockées dans la $Session variable. Les sous-dossiers ou fichiers ne sont pas copiés sans utiliser le commutateur Récursivité . L’opération crée le Folder002_Copy dossier s’il n’existe pas déjà.

$Session = New-PSSession -ComputerName "Server02" -Credential "Contoso\User01"
Copy-Item "D:\Folder002\" -Destination "C:\Folder002_Copy\" -ToSession $Session

Exemple 7 : copier de manière récursive tout le contenu d’un dossier sur un ordinateur distant

Une session est créée sur l’ordinateur distant nommé Server01 avec les informations d’identification de Contoso\User01 et stocke les résultats dans la variable nommée $Session.

L’applet Copy-Item de commande copie l’intégralité du contenu du D:\Folder003 dossier vers le C:\Folder003_Copy répertoire sur l’ordinateur distant à l’aide des informations de session stockées dans la $Session variable. Les sous-dossiers sont copiés avec leurs arborescences de fichiers intactes. L’opération crée le Folder003_Copy dossier s’il n’existe pas déjà.

$Session = New-PSSession -ComputerName "Server04" -Credential "Contoso\User01"
Copy-Item "D:\Folder003\" -Destination "C:\Folder003_Copy\" -ToSession $Session -Recurse

Exemple 8 : Copier un fichier sur un ordinateur distant, puis renommer le fichier

Une session est créée sur l’ordinateur distant nommé Server01 avec les informations d’identification de Contoso\User01 et stocke les résultats dans la variable nommée $Session.

L’applet Copy-Item de commande copie scriptingexample.ps1 du D:\Folder004 dossier vers le C:\Folder004_Copy dossier sur l’ordinateur distant à l’aide des informations de session stockées dans la $Session variable. Le fichier d’origine n’est pas supprimé.

$Session = New-PSSession -ComputerName "Server04" -Credential "Contoso\User01"
Copy-Item "D:\Folder004\scriptingexample.ps1" -Destination "C:\Folder004_Copy\scriptingexample_copy.ps1" -ToSession $Session

Exemple 9 : Copier un fichier distant sur l’ordinateur local

Une session est créée sur l’ordinateur distant nommé Server01 avec les informations d’identification de Contoso\User01 et stocke les résultats dans la variable nommée $Session.

L’applet Copy-Item de commande copie test.log du dossier distant C:\MyRemoteData\ vers le dossier local D:\MyLocalData à l’aide des informations de session stockées dans la $Session variable. Le fichier d’origine n’est pas supprimé.

$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\test.log" -Destination "D:\MyLocalData\" -FromSession $Session

Exemple 10 : Copier l’intégralité du contenu d’un dossier distant sur l’ordinateur local

Une session est créée sur l’ordinateur distant nommé Server01 avec les informations d’identification de Contoso\User01 et stocke les résultats dans la variable nommée $Session.

L’applet Copy-Item de commande copie l’intégralité du contenu du dossier distant C:\MyRemoteData\scripts vers le dossier local D:\MyLocalData à l’aide des informations de session stockées dans la $Session variable. Si le dossier scripts contient des fichiers dans des sous-dossiers, ces sous-dossiers sont copiés avec leurs arborescences de fichiers intactes.

$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\scripts" -Destination "D:\MyLocalData\" -FromSession $Session

Exemple 11 : copier de manière récursive tout le contenu d’un dossier distant sur l’ordinateur local

Une session est créée sur l’ordinateur distant nommé Server01 avec les informations d’identification de Contoso\User01 et stocke les résultats dans la variable nommée $Session.

L’applet Copy-Item de commande copie l’intégralité du contenu du dossier distant C:\MyRemoteData\scripts vers le dossier local D:\MyLocalData\scripts à l’aide des informations de session stockées dans la $Session variable. Étant donné que le paramètre Recurse est utilisé, l’opération crée le dossier scripts s’il n’existe pas déjà. Si le dossier scripts contient des fichiers dans des sous-dossiers, ces sous-dossiers sont copiés avec leurs arborescences de fichiers intactes.

$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\scripts" -Destination "D:\MyLocalData\scripts" -FromSession $Session -Recurse

Exemple 12 : copier de manière récursive des fichiers d’une arborescence de dossiers dans le dossier actif

Cet exemple montre comment copier des fichiers d’une structure de dossiers à plusieurs niveaux dans un seul dossier plat. Les trois premières commandes affichent la structure de dossiers existante et le contenu de deux fichiers, les deux noms 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

Le Copy-Item paramètre Container est défini sur l’applet $falsede commande . Cela entraîne la copie du contenu du dossier source, mais ne conserve pas la structure du dossier. Notez que les fichiers portant le même nom sont remplacés dans le dossier de destination.

Exemple 13 : Utilisation de filtres pour copier des éléments sans récursivité

Cet exemple montre les résultats à l’aide du paramètre Include pour sélectionner les éléments à copier.

Cet exemple utilise la structure de dossiers suivante contenant les fichiers à copier :

  • 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

Dans cet exemple, Copy-Item est appelé avec un caractère générique pour les paramètres Path et Include . La spécification d’un caractère générique pour le paramètre Path garantit qu’il traite tous les fichiers et dossiers correspondant à D:\temp\tree\*. Le paramètre Include filtre la liste des éléments à traiter, limitant l’opération aux seuls chemins qui commencent expar .

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

Le paramètre Include est appliqué au contenu du D:\temp\tree dossier pour copier tous les éléments correspondant ex*à . Notez que, sans récursivité, le D:\temp\out\examples dossier est copié, mais qu’aucun de son contenu n’est copié.

Exemple 14 : Utilisation de filtres pour copier des éléments avec récursivité

Cet exemple montre les résultats à l’aide du paramètre Include pour sélectionner les éléments à copier.

Cet exemple utilise la structure de dossiers suivante contenant les fichiers à copier :

  • 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

Dans cet exemple, Copy-Item est appelé avec un caractère générique pour les paramètres Path et Include . La spécification d’un caractère générique pour le paramètre Path garantit qu’il traite tous les fichiers et dossiers correspondant D:\temp\tree\*à . Le paramètre Include filtre la liste des éléments à traiter, limitant l’opération aux seuls chemins qui commencent expar .

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

Le paramètre Include est appliqué au contenu du D:\temp\tree dossier pour copier tous les éléments correspondant ex*à . Notez que, avec la récursivité, le D:\temp\out\examples dossier est copié avec tous les fichiers et sous-dossiers. La copie inclut des fichiers qui ne correspondent pas au filtre include. Lors de l’utilisation de Copy-Item, les filtres s’appliquent uniquement au niveau supérieur spécifié par le paramètre Path . Ensuite, la récursivité est appliquée aux éléments correspondants.

Notes

Le comportement du paramètre Exclude est le même que celui décrit dans cet exemple, sauf qu’il limite l’opération aux seuls chemins d’accès qui ne correspondent pas au modèle.

Exemple 15 : Limiter la copie récursive des fichiers à partir d’un chemin d’accès spécifié par caractère générique

Cet exemple montre comment limiter les fichiers copiés de manière récursive à partir d’un chemin de correspondance générique dans un autre dossier. L’exemple 13 montre que, étant donné que le paramètre Include filtre uniquement sur les chemins d’accès résolus pour un chemin d’accès à caractère générique, le paramètre Include ne peut pas être utilisé pour limiter les fichiers copiés de manière récursive à partir d’un dossier. Au lieu de cela, vous pouvez utiliser Get-ChildItem pour rechercher les éléments que vous souhaitez copier et passer ces éléments à Copy-Item.

Cet exemple utilise la structure de dossiers suivante contenant les fichiers à copier :

  • 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

Pour copier tous les éléments qui commencent ex*par , utilisez Get-ChildItem avec les paramètres Récurser et Filtrer et diriger les résultats vers 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

Contrairement à , Copy-Itemle paramètre Filter pour Get-ChildItem s’applique aux éléments découverts lors de la récursivité. Cela vous permet de rechercher, filtrer, puis copier des éléments de manière récursive.

Paramètres

-Confirm

Vous demande une confirmation avant d’exécuter l’applet de commande.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Container

Indique que cette applet de commande conserve les objets conteneur pendant l’opération de copie. Par défaut, le paramètre Container est défini sur True.

Type:SwitchParameter
Position:Named
Default value:True
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Notes

Ce paramètre n’est pris en charge par aucun fournisseur installé avec PowerShell. Pour emprunter l’identité d’un autre utilisateur ou élever vos informations d’identification lors de l’exécution de cette applet de commande, utilisez Invoke-Command.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Destination

Spécifie le chemin d'accès au nouvel emplacement. L'emplacement par défaut est le répertoire actif.

Pour renommer l’élément copié, spécifiez un nouveau nom dans la valeur du paramètre Destination .

Type:String
Position:1
Default value:Current directory
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Exclude

Spécifie un ou plusieurs éléments ou modèles de chemin d’accès, tels que "*.txt", pour limiter l’opération de cette applet de commande. La valeur de ce paramètre filtre par rapport au résultat de correspondance de caractères génériques du paramètre Path , et non aux résultats finaux. Ce paramètre n’est effectif que lorsque le chemin d’accès est spécifié avec un ou plusieurs caractères génériques. Étant donné que ce paramètre filtre uniquement sur les chemins d’accès résolus pour le paramètre Path , il ne filtre pas les éléments découverts lors de la récursivité dans les dossiers enfants avec le paramètre Recurse .

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Filter

Spécifie un filtre pour qualifier le paramètre Path . Le fournisseur FileSystem est le seul fournisseur PowerShell installé qui prend en charge l’utilisation de filtres. Vous trouverez la syntaxe du langage de filtre FileSystem dans about_Wildcards. Les filtres sont plus efficaces que d’autres paramètres, car le fournisseur les applique lorsque l’applet de commande obtient les objets au lieu de laisser PowerShell filtrer les objets après leur récupération.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Force

Indique que cette applet de commande copie les éléments qui ne peuvent pas autrement être modifiés, tels que la copie sur un fichier ou un alias en lecture seule.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FromSession

Il s’agit d’un paramètre dynamique mis à disposition par le fournisseur FileSystem .

Spécifiez l’objet PSSession à partir duquel un fichier distant est copié. Lorsque vous utilisez ce paramètre, les paramètres Path et LiteralPath font référence au chemin d’accès local sur l’ordinateur distant.

Pour plus d’informations, consultez about_FileSystem_Provider.

Type:PSSession
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Include

Spécifie un ou plusieurs éléments ou modèles de chemin d’accès, tels que "*.txt", pour limiter l’opération de cette applet de commande. La valeur de ce paramètre filtre par rapport au résultat de correspondance de caractères génériques du paramètre Path , et non aux résultats finaux. Ce paramètre n’est effectif que lorsque le chemin d’accès est spécifié avec un ou plusieurs caractères génériques. Étant donné que ce paramètre filtre uniquement sur les chemins d’accès résolus pour le paramètre Path , il ne filtre pas les éléments découverts lors de la récursivité dans les dossiers enfants avec le paramètre Recurse .

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-LiteralPath

Spécifie un chemin d’accès à un ou plusieurs emplacements. La valeur de LiteralPath est utilisée exactement telle qu’elle est tapée. Aucun caractère n’est interprété en tant que caractère générique. Si le chemin d’accès inclut des caractères d’échappement, mettez-le entre des guillemets simples. Les guillemets simples indiquent à PowerShell de ne pas interpréter de caractères comme des séquences d’échappement.

Pour plus d’informations, consultez about_Quoting_Rules.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PassThru

Retourne un objet qui représente l’élément avec lequel vous travaillez. Par défaut, cette applet de commande ne génère aucune sortie.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Spécifie, sous forme de tableau de chaînes, le chemin des éléments à copier. Les caractères génériques sont autorisés.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-Recurse

Indique que cette applet de commande effectue une copie récursive.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ToSession

Il s’agit d’un paramètre dynamique mis à disposition par le fournisseur FileSystem .

Spécifiez l’objet PSSession vers lequel un fichier distant est copié. Lorsque vous utilisez ce paramètre, le paramètre Destination fait référence au chemin d’accès local sur l’ordinateur distant.

Pour plus d’informations, consultez about_FileSystem_Provider.

Type:PSSession
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Montre ce qui se passe en cas d’exécution de l’applet de commande. L’applet de commande n’est pas exécutée.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entrées

String

Vous pouvez diriger une chaîne qui contient un chemin d’accès à cette applet de commande.

Sorties

None

Par défaut, cette applet de commande ne retourne aucune sortie.

PSObject

Lorsque vous utilisez le paramètre PassThru , cette applet de commande retourne un objet représentant l’élément copié.

Notes

PowerShell inclut les alias suivants pour Copy-Item:

  • Toutes les plateformes :
    • copy
    • cpi
  • Windows :
    • cp

Cette applet de commande est conçue pour fonctionner avec les données exposées par n’importe quel fournisseur. Pour répertorier les fournisseurs disponibles dans votre session, tapez Get-PSProvider. Pour plus d'informations, consultez about_Providers.