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>]
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 sur un lecteur de certificat.
Cette applet de commande ne coupe pas ou ne supprime pas 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 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
Notes
Si vous devez inclure le Logfiles
répertoire dans la copie, supprimez le \*
chemin d’accès.
Par exemple :
Copy-Item -Path "C:\Logfiles" -Destination "C:\Drawings" -Recurse
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 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
Notes
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 remplace le nom de Get-Widget.ps1
l’élément par Get-Widget.ps1.txt
, afin qu’elle puisse être attachée 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 de 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 de 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 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 de 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. Dans le cadre de l’opération de copie, la commande remplace le nom de scriptingexample.ps1
l’élément par scriptingexample_copy.ps1
, afin qu’elle puisse être attachée aux messages électroniques. 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 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 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 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 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 multiniveau 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 $false
sur . Cela entraîne la copie du contenu du dossier source, mais ne conserve pas la structure de dossiers. 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 qui correspondent D:\temp\tree\*
. Le paramètre Include filtre la liste des éléments à traiter, limitant l’opération aux seuls chemins d’accès 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 15 : 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 qui correspondent D:\temp\tree\*
. Le paramètre Include filtre la liste des éléments à traiter, limitant l’opération aux seuls chemins d’accès 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 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 Copy-Item
, les filtres s’appliquent uniquement au niveau supérieur spécifié par le paramètre Path . La récursivité est ensuite appliquée à ces éléments correspondants.
Notes
Le comportement du paramètre Exclude est identique à 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 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 de caractères génériques dans un autre dossier. L’exemple 13 montre que, étant donné que le paramètre Include filtre uniquement les chemins d’accès 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 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 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-Item
paramètre Filter pour Get-ChildItem
s’appliquer aux éléments découverts pendant la récursivité. Cela vous permet de rechercher, de filtrer, puis de 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 Conteneur a la valeur 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 en cours de copie, 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 de chemin d’accès ou modèles, 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 de caractères génériques du paramètre Path , et non les résultats finaux. Ce paramètre est effectif uniquement 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 |
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 des 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 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Force
Indique que cette applet de commande copie des éléments qui ne peuvent pas être modifiés autrement, 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
Spécifie 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.
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 de chemin d’accès ou modèles, 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 de caractères génériques du paramètre Path , et non les résultats finaux. Ce paramètre est effectif uniquement 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 |
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 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 les 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
Renvoie 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, 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 |
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
Spécifie l’objet PSSession dans 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.
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 or an object representing the copied item
Lorsque vous utilisez le paramètre PassThru , cette applet de commande retourne un objet qui représente l’élément copié. Sinon, cette applet de commande ne génère aucune sortie.
Notes
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.