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 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 copiés. 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 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 d’un 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 Container est défini sur 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 \* du chemin d’accès. Par exemple :

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

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 \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 indiqué dans l’exemple 2. Ou nommez 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 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 l’élément par Get-Widget.ps1Get-Widget.ps1.txt, afin qu’il puisse être joint 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 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 de 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 de 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 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 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 de 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 l’élément par scriptingexample.ps1scriptingexample_copy.ps1, afin qu’il puisse être joint 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 de Contoso\User01 et 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 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

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

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, en tant que tableau de chaînes, un ou plusieurs éléments que cette applet de commande exclut dans l’opération. La valeur de ce paramètre qualifie le paramètre Path. Entrez un élément ou un modèle de chemin d’accès, tel que *.txt. Les caractères génériques sont autorisés. Le paramètre Exclude n’est effectif que lorsque la commande inclut le contenu d’un élément, tel que C:\Windows\*, où le caractère générique spécifie le contenu du C:\Windows répertoire.

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

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

-Include

Spécifie, en tant que tableau de chaînes, un ou plusieurs éléments que cette applet de commande inclut dans l’opération. La valeur de ce paramètre qualifie le paramètre Path. Entrez un élément ou un modèle de chemin d’accès, tel que "*.txt". Les caractères génériques sont autorisés. Le paramètre Include n’est effectif que lorsque la commande inclut le contenu d’un élément, tel que C:\Windows\*, où le caractère générique spécifie le contenu du C:\Windows répertoire.

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 au fur et à mesure 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

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, sous forme de 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

String

Vous pouvez diriger une chaîne qui contient un chemin vers 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.