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 de 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. Als u de naam van een item wilt wijzigen en niet wilt kopiëren, gebruikt u de Rename-Item
cmdlet.
Voorbeelden
Voorbeeld 1: Een bestand kopiëren naar de opgegeven map
In dit voorbeeld wordt het mar1604.log.txt
bestand gekopieerd naar de C:\Presentation
map. 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. Standaard is de containerparameter ingesteld op True, waardoor de mapstructuur behouden blijft.
Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings" -Recurse
Notitie
Als u de Logfiles
map in de kopie wilt opnemen, verwijdert u de \*
map 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 deze naar een bestaande doelmap, zoals wordt weergegeven in voorbeeld 2. Of noem de nieuwe doelmap met dezelfde naam als de bronmap.
Copy-Item -Path "C:\Logfiles" -Destination "C:\Drawings\Logs" -Recurse
Notitie
Als het pad bevat \*
, worden 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 naam van het item in Get-Widget.ps1
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 Recurse-switch 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 naar een externe 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 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: Kopieer een bestand naar een externe computer en wijzig de naam van het bestand
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 naam van het item in scriptingexample.ps1
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 bestandsstructuren intact.
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\scripts" -Destination "D:\MyLocalData\" -FromSession $Session
Voorbeeld 11: Kopieer recursief de volledige inhoud van een externe map 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 bestandsstructuren 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 uit een mapstructuur naar de huidige map
In dit voorbeeld ziet u hoe u bestanden uit een mapstructuur met meerdere niveaus kopieert 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 containerparameter 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 Opnemen 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 het aangeroepen met een jokerteken voor de parameters Path en Include . Als u een jokerteken voor de parameter Path opgeeft, zorgt u ervoor dat alle bestanden en mappen die overeenkomen, worden verwerkt D:\temp\tree\*
. De include-parameter filtert de lijst met te verwerken items, 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 ex*
. U ziet dat de D:\temp\out\examples
map zonder recursie wordt gekopieerd, maar dat geen van de inhoud ervan 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 Opnemen 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 het aangeroepen met een jokerteken voor de parameters Path en Include . Als u een jokerteken opgeeft voor de parameter Path , zorgt u ervoor dat alle bestanden en mappen die overeenkomen, worden verwerkt D:\temp\tree\*
. De include-parameter filtert de lijst met te verwerken items, 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 ex*
. U ziet dat met recursie de D:\temp\out\examples
map samen met alle bestanden en submappen wordt gekopieerd. De kopie bevat bestanden die niet overeenkomen met het insluitingsfilter. Wanneer u dit 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: de bestanden beperken tot recursief kopiëren vanuit een pad met jokertekens
In dit voorbeeld ziet u hoe u de bestanden recursief kunt beperken die zijn gekopieerd van een pad met jokertekens in een andere map. Voorbeeld 13 geeft aan dat, omdat de include-parameter alleen filters op de paden die zijn omgezet voor een pad met jokertekens opgeven, deparameter Include niet kan worden gebruikt om de bestanden recursief uit een map te beperken. In plaats daarvan kunt u de Get-ChildItem
items vinden die u wilt kopiëren en doorgeven 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 ex*
, gebruikt u Get-ChildItem
de parameters Recurse en Filter en geeft 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-Item
parameter Filter is Get-ChildItem
de filterparameter van toepassing op de items die tijdens recursie zijn gedetecteerd. Hierdoor 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 bewaart tijdens de kopieerbewerking. Standaard is de containerparameter 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. Als u een andere gebruiker wilt imiteren of uw referenties wilt verhogen bij het uitvoeren van deze cmdlet, gebruikt u Invoke-Command.
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 van het gekopieerde item wilt wijzigen, 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 op, zoals "*.txt"
, om de bewerking van deze cmdlet te beperken. De waarde van deze parameter filtert op het jokerteken-overeenkomende resultaat van de parameter Path , niet de uiteindelijke resultaten. Deze parameter is alleen effectief wanneer het pad wordt opgegeven met een of meer jokertekens. Omdat deze parameter alleen filtert op de paden die zijn opgelost voor de parameter Path , worden er geen items gefilterd die worden gedetecteerd bij het recurse-bestand 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 op om de path-parameter te kwalificeren. De FileSystem-provider is de enige geïnstalleerde PowerShell-provider die ondersteuning biedt voor het gebruik van filters. 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 PowerShell de objecten te filteren nadat ze zijn opgehaald.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Force
Geeft aan dat met deze cmdlet items worden gekopieerd die anders niet kunnen worden gewijzigd, zoals kopiëren via een alleen-lezenbestand 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 op, zoals "*.txt"
, om de bewerking van deze cmdlet te beperken. De waarde van deze parameter filtert op het jokerteken-overeenkomende resultaat van de parameter Path , niet de uiteindelijke resultaten. Deze parameter is alleen effectief wanneer het pad wordt opgegeven met een of meer jokertekens. Omdat deze parameter alleen filtert op de paden die zijn opgelost voor de parameter Path , worden er geen items gefilterd die worden gedetecteerd bij het recurse-bestand 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 exact gebruikt terwijl deze wordt getypt. Er worden geen tekens geïnterpreteerd als jokertekens. Als het pad escapetekens bevat, plaatst u het tussen enkele aanhalingstekens. Enkele aanhalingstekens geven PowerShell aan dat u geen tekens als escape-reeksen interpreteert.
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. Deze cmdlet genereert standaard geen uitvoer.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Hiermee geeft u, als tekenreeksmatrix, het pad naar de te kopiëren items op. 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 waarnaar een extern bestand wordt gekopieerd. Wanneer u deze parameter gebruikt, verwijst de doelparameter 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
U kunt een tekenreeks met een pad naar deze cmdlet doorsluisen.
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.