Partager via


Copy-Item

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

Syntaxe

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 emplacement dans le même espace de noms. Par exemple, il peut copier un fichier dans un dossier, mais il ne peut pas copier un fichier dans un lecteur de certificat.

Cette applet de commande ne coupe pas ou ne supprime pas les éléments copiés. Les éléments particuliers que l’applet de commande peut copier dépendent du fournisseur PowerShell qui expose l’élément. Par exemple, il peut copier des fichiers et des répertoires dans un lecteur de système de fichiers et des clés de Registre et des entrées dans le lecteur de 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 copie 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 Logfiles répertoire contient des 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 conteneur a la valeur True, ce qui conserve la structure de répertoires.

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

Remarque

Si le chemin d’accès C:\Drawings n’existe pas, l’applet de commande copie tous les fichiers de l’arborescence des Logfiles dossiers dans un seul dossier C:\Drawings, en remplaçant tous les fichiers portant le même nom.

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

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

Pour inclure le nom du répertoire source, copiez-le dans un répertoire de destination existant, comme indiqué dans l’exemple 2. Ou nommez le nouveau répertoire de destination avec le même répertoire que le répertoire source.

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

Remarque

Si le chemin d’accès inclut \*, tout le contenu du fichier du répertoire, y compris les arborescences de sous-répertoires, 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 modifie le nom de Get-Widget.ps1 l’élément pour Get-Widget.ps1.txtqu’elle puisse être attachée en toute sécurité aux messages électroniques.

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 et Contoso\User01 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 et Contoso\User01 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. Tous les sous-dossiers ou fichiers ne sont pas copiés sans utiliser le commutateur Recurse . 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 l’intégralité du contenu d’un dossier sur un ordinateur distant

Une session est créée sur l’ordinateur distant nommé Server01 avec les informations d’identification et Contoso\User01 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 et Contoso\User01 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 et Contoso\User01 stocke les résultats dans la variable nommée $Session.

L’applet Copy-Item de commande copie test.log à partir de la distance 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 et Contoso\User01 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 de 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 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 et Contoso\User01 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 de scripts s’il n’existe pas déjà. Si le dossier de 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 dossier plat unique. 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

L’applet Copy-Item de commande a le paramètre Conteneur défini sur $false. 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’elle traite tous les fichiers et dossiers qui correspondent D:\temp\tree\*. Le paramètre Include filtre la liste des éléments à traiter, limitant l’opération uniquement aux chemins qui commencent par 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

Le paramètre Include est appliqué au contenu du D:\temp\tree dossier pour copier tous les éléments qui correspondent ex*. Notez que, sans récursivité, le D:\temp\out\examples dossier est copié, mais 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’elle traite tous les fichiers et dossiers qui correspondent D:\temp\tree\*. Le paramètre Include filtre la liste des éléments à traiter, limitant l’opération uniquement aux chemins qui commencent par 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

Le paramètre Include est appliqué au contenu du D:\temp\tree dossier pour copier tous les éléments qui correspondent ex*. Notez que, avec 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. Lorsque vous utilisez 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 à ces éléments correspondants.

Remarque

Le comportement du paramètre Exclude est identique à celui décrit dans cet exemple, sauf qu’il limite l’opération uniquement aux chemins qui ne correspondent pas au modèle.

Exemple 15 : Limiter les fichiers à copier de manière récursive à partir d’un chemin spécifié par caractères génériques

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 les chemins résolus pour un chemin d’accès spécifiant des caractères génériques, 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 transmettre 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 par ex*, utilisez Get-ChildItem les paramètres Recurse et Filter et dirigez 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 au Copy-Itemparamètre Filter pour Get-ChildItem s’applique aux éléments détectés 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 la commande cmdlet.

Type:SwitchParameter
Alias:cf
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Container

Indique que cette applet de commande conserve les objets conteneur pendant l’opération de copie. Par défaut, le paramètre Conteneur a la valeur True.

Type:SwitchParameter
Position:Named
Valeur par défaut:True
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Credential

Remarque

Ce paramètre n’est pas pris en charge par les fournisseurs installés 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
Valeur par défaut:Current user
Obligatoire:False
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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 en cours de copie, spécifiez un nouveau nom dans la valeur du paramètre De destination .

Type:String
Position:1
Valeur par défaut:Current directory
Obligatoire:False
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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 le résultat de correspondance générique du paramètre Path , et non les 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 les chemins résolus pour le paramètre Path , il ne filtre aucun élément détecté lors de la récursivité dans les dossiers enfants avec le paramètre Recurse .

Type:String[]
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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 plutôt que d’avoir PowerShell filtrer les objets après leur récupération.

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:True

-Force

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

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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 local sur l’ordinateur distant.

Pour plus d’informations, consultez about_FileSystem_Provider.

Type:PSSession
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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 le résultat de correspondance générique du paramètre Path , et non les 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 les chemins résolus pour le paramètre Path , il ne filtre aucun élément détecté lors de la récursivité dans les dossiers enfants avec le paramètre Recurse .

Type:String[]
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:True

-LiteralPath

Spécifie un chemin d’accès à un ou plusieurs emplacements. La valeur de LiteralPath est utilisée exactement comme elle est typé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 séquences d’échappement.

Pour plus d’informations, consultez about_Quoting_Rules.

Type:String[]
Alias:PSPath, LP
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Path

Spécifie, en tant que tableau de chaînes, le chemin d’accès aux éléments à copier. Les caractères génériques sont autorisés.

Type:String[]
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:True

-Recurse

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

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ToSession

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

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

Pour plus d’informations, consultez about_FileSystem_Provider.

Type:PSSession
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-WhatIf

Montre ce qui se passe en cas d’exécution de la commande cmdlet. La commande cmdlet n’est pas exécutée.

Type:SwitchParameter
Alias:wi
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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.