Delen via


Copy-Item

Hiermee kopieert u een item van de ene locatie naar de andere.

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

De Copy-Item cmdlet kopieert een item van de ene locatie naar een andere locatie in dezelfde naamruimte. Het kan bijvoorbeeld een bestand naar een map kopiëren, maar het kan geen bestand naar een certificaatstation kopiëren.

Met deze cmdlet worden de items die worden gekopieerd, niet geknipt of verwijderd. De specifieke items die de cmdlet kan kopiëren, zijn afhankelijk van de PowerShell-provider die het item beschikbaar maakt. Het kan bijvoorbeeld bestanden en mappen kopiëren in een bestandssysteemstation en registersleutels en vermeldingen in het registerstation.

Met deze cmdlet kunt u items in dezelfde opdracht kopiëren en de naam ervan wijzigen. Als u de naam van een item wilt wijzigen, voert u de nieuwe naam in de waarde van de doelparameter in. Gebruik de cmdlet om de naam van een item te wijzigen en niet te Rename-Item kopiëren.

Voorbeelden

Voorbeeld 1: Een bestand kopiëren naar de opgegeven map

In dit voorbeeld wordt het mar1604.log.txt bestand naar de C:\Presentation map gekopieerd. Het oorspronkelijke bestand wordt niet verwijderd.

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

Voorbeeld 2: mapinhoud kopiëren naar een bestaande map

In dit voorbeeld wordt de inhoud van de C:\Logfiles map gekopieerd naar de bestaande C:\Drawings map. De Logfiles map wordt niet gekopieerd.

Als de Logfiles map bestanden in submappen bevat, worden deze submappen gekopieerd met hun bestandsstructuren intact. De parameter Container is standaard ingesteld op True, waardoor de mapstructuur behouden blijft.

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

Notitie

Als u de map in de Logfiles kopie wilt opnemen, verwijdert u de \* uit het pad. Bijvoorbeeld:

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

Als het pad C:\Drawings niet bestaat, kopieert de cmdlet alle bestanden uit de Logfiles map naar één bestand C:\Drawings.

Voorbeeld 3: map en inhoud kopiëren naar een nieuwe map

In dit voorbeeld wordt de inhoud van de C:\Logfiles bronmap gekopieerd en wordt een nieuwe doelmap gemaakt. De nieuwe doelmap wordt \Logs gemaakt in C:\Drawings.

Als u de naam van de bronmap wilt opnemen, kopieert u naar een bestaande doelmap, zoals wordt weergegeven in voorbeeld 2. Of geef de nieuwe doelmap dezelfde naam als de bronmap.

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

Notitie

Als het pad bevat \*, wordt alle bestandsinhoud van de map, inclusief de submapstructuren, gekopieerd naar de nieuwe doelmap. Bijvoorbeeld:

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

Voorbeeld 4: Een bestand kopiëren naar de opgegeven map en de naam van het bestand wijzigen

In dit voorbeeld wordt de Copy-Item cmdlet gebruikt om het Get-Widget.ps1 script van de \\Server01\Share map naar de \\Server12\ScriptArchive map te kopiëren. Als onderdeel van de kopieerbewerking wijzigt de opdracht de itemnaam van Get-Widget.ps1 in Get-Widget.ps1.txt, zodat deze kan worden toegevoegd aan e-mailberichten.

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

Voorbeeld 5: Een bestand kopiëren naar een externe computer

Er wordt een sessie gemaakt op de externe computer met de naam Server01 met de referentie van Contoso\User01 en slaat de resultaten op in de variabele met de naam $Session.

De Copy-Item cmdlet kopieert test.log van de D:\Folder001 map naar de C:\Folder001_Copy map op de externe computer met behulp van de sessiegegevens die zijn opgeslagen in de $Session variabele. Het oorspronkelijke bestand wordt niet verwijderd.

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

Voorbeeld 6: Een map kopiëren naar een externe computer

Er wordt een sessie gemaakt op de externe computer met de naam Server01 met de referentie van Contoso\User01 en slaat de resultaten op in de variabele met de naam $Session.

De Copy-Item cmdlet kopieert de D:\Folder002 map naar de C:\Folder002_Copy map op de externe computer met behulp van de sessiegegevens die zijn opgeslagen in de $Session variabele. Submappen of bestanden worden niet gekopieerd zonder de schakeloptie Recurse te gebruiken. Met de bewerking wordt de Folder002_Copy map gemaakt als deze nog niet bestaat.

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

Voorbeeld 7: recursief de volledige inhoud van een map kopiëren naar een externe computer

Er wordt een sessie gemaakt op de externe computer met de naam Server01 met de referentie van Contoso\User01 en slaat de resultaten op in de variabele met de naam $Session.

De Copy-Item cmdlet kopieert de volledige inhoud van de D:\Folder003 map naar de C:\Folder003_Copy map op de externe computer met behulp van de sessiegegevens die zijn opgeslagen in de $Session variabele. De submappen worden gekopieerd met hun bestandsstructuren intact. Met de bewerking wordt de Folder003_Copy map gemaakt als deze nog niet bestaat.

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

Voorbeeld 8: Een bestand kopiëren naar een externe computer en de naam van het bestand wijzigen

Er wordt een sessie gemaakt op de externe computer met de naam Server01 met de referentie van Contoso\User01 en slaat de resultaten op in de variabele met de naam $Session.

De Copy-Item cmdlet kopieert scriptingexample.ps1 van de D:\Folder004 map naar de C:\Folder004_Copy map op de externe computer met behulp van de sessiegegevens die zijn opgeslagen in de $Session variabele. Als onderdeel van de kopieerbewerking wijzigt de opdracht de itemnaam van scriptingexample.ps1 in scriptingexample_copy.ps1, zodat deze kan worden toegevoegd aan e-mailberichten. Het oorspronkelijke bestand wordt niet verwijderd.

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

Voorbeeld 9: Een extern bestand kopiëren naar de lokale computer

Er wordt een sessie gemaakt op de externe computer met de naam Server01 met de referentie van Contoso\User01 en slaat de resultaten op in de variabele met de naam $Session.

De Copy-Item cmdlet kopieert test.log van de externe C:\MyRemoteData\ naar de lokale D:\MyLocalData map met behulp van de sessiegegevens die zijn opgeslagen in de $Session variabele. Het oorspronkelijke bestand wordt niet verwijderd.

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

Voorbeeld 10: de volledige inhoud van een externe map naar de lokale computer kopiëren

Er wordt een sessie gemaakt op de externe computer met de naam Server01 met de referentie van Contoso\User01 en slaat de resultaten op in de variabele met de naam $Session.

De Copy-Item cmdlet kopieert de volledige inhoud van de externe C:\MyRemoteData\scripts map naar de lokale D:\MyLocalData map met behulp van de sessiegegevens die zijn opgeslagen in de $Session variabele. Als de map scripts bestanden in submappen bevat, worden deze submappen gekopieerd met hun bestandsstructuur intact.

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

Voorbeeld 11: recursief de volledige inhoud van een externe map kopiëren naar de lokale computer

Er wordt een sessie gemaakt op de externe computer met de naam Server01 met de referentie van Contoso\User01 en slaat de resultaten op in de variabele met de naam $Session.

De Copy-Item cmdlet kopieert de volledige inhoud van de externe C:\MyRemoteData\scripts map naar de lokale D:\MyLocalData\scripts map met behulp van de sessiegegevens die zijn opgeslagen in de $Session variabele. Omdat de parameter Recurse wordt gebruikt, maakt de bewerking de map scripts als deze nog niet bestaat. Als de map scripts bestanden in submappen bevat, worden deze submappen gekopieerd met hun bestandsstructuur intact.

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

Voorbeeld 12: Bestanden recursief kopiëren vanuit een mapstructuur naar de huidige map

In dit voorbeeld ziet u hoe u bestanden kopieert van een mapstructuur met meerdere niveaus naar één platte map. De eerste drie opdrachten tonen de bestaande mapstructuur en de inhoud van twee bestanden, beide namen 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

De Copy-Item cmdlet heeft de parameter Container ingesteld op $false. Hierdoor wordt de inhoud van de bronmap gekopieerd, maar blijft de mapstructuur niet behouden. U ziet dat bestanden met dezelfde naam worden overschreven in de doelmap.

Voorbeeld 13: Filters gebruiken om items te kopiëren zonder recursie

In dit voorbeeld ziet u de resultaten met behulp van de parameter Include om te selecteren welke items moeten worden gekopieerd.

In dit voorbeeld wordt de volgende mapstructuur gebruikt die de bestanden bevat die moeten worden gekopieerd:

  • 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

In dit voorbeeld Copy-Item wordt aangeroepen met een jokerteken voor zowel de parameters Pad als Opnemen . Als u een jokerteken opgeeft voor de path-parameter , zorgt u ervoor dat alle bestanden en mappen worden verwerkt die overeenkomen met D:\temp\tree\*. De parameter Include filtert de lijst met items die moeten worden verwerkt, waardoor de bewerking wordt beperkt tot alleen de paden die beginnen met 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

De parameter Include wordt toegepast op de inhoud van D:\temp\tree de map om alle items te kopiëren die overeenkomen met ex*. U ziet dat de D:\temp\out\examples map zonder recursie wordt gekopieerd, maar dat er geen inhoud wordt gekopieerd.

Voorbeeld 15: Filters gebruiken om items met recursie te kopiëren

In dit voorbeeld ziet u de resultaten met behulp van de parameter Include om te selecteren welke items moeten worden gekopieerd.

In dit voorbeeld wordt de volgende mapstructuur gebruikt die de bestanden bevat die moeten worden gekopieerd:

  • 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

In dit voorbeeld Copy-Item wordt aangeroepen met een jokerteken voor zowel de parameters Pad als Opnemen . Als u een jokerteken opgeeft voor de parameter Path , zorgt u ervoor dat alle bestanden en mappen worden verwerkt die overeenkomen met D:\temp\tree\*. De parameter Include filtert de lijst met items die moeten worden verwerkt, waardoor de bewerking wordt beperkt tot alleen de paden die beginnen met 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

De parameter Include wordt toegepast op de inhoud van D:\temp\tree de map om alle items te kopiëren die overeenkomen met ex*. Met recursie wordt de D:\temp\out\examples map samen met alle bestanden en submappen gekopieerd. De kopie bevat bestanden die niet overeenkomen met het insluitingsfilter. Wanneer u gebruikt Copy-Item, zijn de filters alleen van toepassing op het hoogste niveau dat is opgegeven door de parameter Path . Vervolgens wordt recursie toegepast op die overeenkomende items.

Notitie

Het gedrag van de parameter Exclude is hetzelfde als beschreven in dit voorbeeld, behalve dat de bewerking wordt beperkt tot alleen de paden die niet overeenkomen met het patroon.

Voorbeeld 15: beperk het recursief kopiëren van bestanden vanuit een pad dat is opgegeven met jokertekens

In dit voorbeeld ziet u hoe u de bestanden kunt beperken die recursief worden gekopieerd van een pad dat overeenkomt met jokertekens naar een andere map. In voorbeeld 13 ziet u dat, omdat de parameter Include alleen filtert op de paden die zijn opgelost voor een pad met jokertekens, de parameter Include niet kan worden gebruikt om de bestanden te beperken die recursief uit een map worden gekopieerd. In plaats daarvan kunt u gebruiken Get-ChildItem om de items te zoeken die u wilt kopiëren en deze items door te geven aan Copy-Item.

In dit voorbeeld wordt de volgende mapstructuur gebruikt die de bestanden bevat die moeten worden gekopieerd:

  • 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

Als u alle items wilt kopiëren die beginnen met ex*, gebruikt u Get-ChildItem met de parameters Recurse en Filter en sluist u de resultaten door naar 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

In tegenstelling tot de Copy-Itemis de filterparameter voor Get-ChildItem van toepassing op de items die tijdens recursie zijn gedetecteerd. Hiermee kunt u items recursief zoeken, filteren en kopiëren.

Parameters

-Confirm

Hiermee wordt u gevraagd om bevestiging voordat u de cmdlet uitvoert.

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

-Container

Geeft aan dat deze cmdlet containerobjecten behoudt tijdens de kopieerbewerking. De parameter Container is standaard ingesteld op True.

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

-Credential

Notitie

Deze parameter wordt niet ondersteund door providers die zijn geïnstalleerd met PowerShell. Gebruik Invoke-Command om een andere gebruiker te imiteren of uw referenties te verhogen bij het uitvoeren van deze cmdlet.

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

-Destination

Hiermee geeft u het pad naar de nieuwe locatie. De standaardwaarde is de huidige map.

Als u de naam wilt wijzigen van het item dat wordt gekopieerd, geeft u een nieuwe naam op in de waarde van de doelparameter .

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

-Exclude

Hiermee geeft u een of meer padelementen of patronen, zoals "*.txt", om de bewerking van deze cmdlet te beperken. De waarde van deze parameter filtert op het jokerteken-overeenkomende resultaat van de path-parameter , niet op de uiteindelijke resultaten. Deze parameter is alleen effectief wanneer het pad is opgegeven met een of meer jokertekens. Omdat deze parameter alleen filtert op de paden die zijn omgezet voor de padparameter , worden er geen items gefilterd die worden gedetecteerd bij het recursen van onderliggende mappen met de parameter Recurse .

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

-Filter

Hiermee geeft u een filter om de path parameter te kwalificeren. De Bestandssysteemprovider is de enige geïnstalleerde PowerShell-provider die het gebruik van filters ondersteunt. U vindt de syntaxis voor de filtertaal Bestandssysteem in about_Wildcards. Filters zijn efficiënter dan andere parameters, omdat de provider ze toepast wanneer de cmdlet de objecten ophaalt in plaats van dat PowerShell de objecten nadat ze zijn opgehaald, moet filteren.

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

-Force

Hiermee wordt aangegeven dat met deze cmdlet items worden gekopieerd die anders niet kunnen worden gewijzigd, zoals het kopiëren via een alleen-lezen bestand of alias.

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

-FromSession

Hiermee geeft u het PSSession-object waaruit een extern bestand wordt gekopieerd. Wanneer u deze parameter gebruikt, verwijzen de parameters Path en LiteralPath naar het lokale pad op de externe computer.

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

-Include

Hiermee geeft u een of meer padelementen of patronen, zoals "*.txt", om de bewerking van deze cmdlet te beperken. De waarde van deze parameter filtert op het jokerteken-overeenkomende resultaat van de path-parameter , niet op de uiteindelijke resultaten. Deze parameter is alleen effectief wanneer het pad is opgegeven met een of meer jokertekens. Omdat deze parameter alleen filtert op de paden die zijn omgezet voor de padparameter , worden er geen items gefilterd die worden gedetecteerd bij het recursen van onderliggende mappen met de parameter Recurse .

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

-LiteralPath

Hiermee geeft u een pad naar een of meer locaties. De waarde van LiteralPath wordt precies gebruikt zoals deze wordt getypt. Geen tekens worden geïnterpreteerd als jokertekens. Als het pad escape-tekens bevat, plaatst u het tussen enkele aanhalingstekens. Enkele aanhalingstekens geven PowerShell aan dat geen tekens als escape-reeksen worden geïnterpreteerd.

Zie about_Quoting_Rules voor meer informatie.

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

-PassThru

Retourneert een object dat het item vertegenwoordigt waarmee u werkt. Met deze cmdlet wordt standaard geen uitvoer gegenereerd.

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

-Path

Hiermee geeft u, als een tekenreeksmatrix, het pad op naar de items die moeten worden gekopieerd. Jokertekens zijn toegestaan.

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

-Recurse

Geeft aan dat deze cmdlet een recursieve kopie uitvoert.

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

-ToSession

Hiermee geeft u het PSSession-object op waarnaar een extern bestand wordt gekopieerd. Wanneer u deze parameter gebruikt, verwijst de parameter Destination naar het lokale pad op de externe computer.

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

-WhatIf

Hiermee wordt weergegeven wat er zou gebeuren als u de cmdlet uitvoert. De cmdlet wordt niet uitgevoerd.

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

Invoerwaarden

String

U kunt een tekenreeks doorsnijden die een pad naar deze cmdlet bevat.

Uitvoerwaarden

None or an object representing the copied item

Wanneer u de parameter PassThru gebruikt, retourneert deze cmdlet een object dat het gekopieerde item vertegenwoordigt. Anders genereert deze cmdlet geen uitvoer.

Notities

Deze cmdlet is ontworpen om te werken met de gegevens die door elke provider worden weergegeven. Als u de providers wilt weergeven die beschikbaar zijn in uw sessie, typt u Get-PSProvider. Zie about_Providers voor meer informatie.