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.ps1
Get-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 $false
de 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 ex
par .
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 ex
par .
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-Item
le 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
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.
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.