Copy-Item

Kopierar ett objekt från en plats till en annan.

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

Cmdleten Copy-Item kopierar ett objekt från en plats till en annan i samma namnområde. Den kan till exempel kopiera en fil till en mapp, men den kan inte kopiera en fil till en certifikatenhet.

Den här cmdleten klipper inte ut eller tar bort objekten som kopieras. Vilka objekt som cmdleten kan kopiera beror på vilken PowerShell-provider som exponerar objektet. Den kan till exempel kopiera filer och kataloger på en filsystemenhet och registernycklar och poster på registerenheten.

Den här cmdleten kan kopiera och byta namn på objekt i samma kommando. Om du vill byta namn på ett objekt anger du det nya namnet i värdet för målparametern. Om du vill byta namn på ett objekt och inte kopiera det använder du cmdleten Rename-Item .

Exempel

Exempel 1: Kopiera en fil till den angivna katalogen

I det mar1604.log.txt här exemplet kopieras filen till C:\Presentation katalogen . Den ursprungliga filen tas inte bort.

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

Exempel 2: Kopiera kataloginnehåll till en befintlig katalog

I det här exemplet kopieras innehållet i C:\Logfiles katalogen till den befintliga C:\Drawings katalogen. Katalogen Logfiles kopieras inte.

Logfiles Om katalogen innehåller filer i underkataloger kopieras dessa underkataloger med sina filträd intakta. Som standard är containerparametern inställd på True, vilket bevarar katalogstrukturen.

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

Anteckning

Om du behöver inkludera Logfiles katalogen i kopian tar du bort \* från sökvägen. Exempel:

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

Om sökvägen C:\Drawings inte finns kopierar cmdleten alla filer från Logfiles mappen till en enda fil C:\Drawings.

Exempel 3: Kopiera katalog och innehåll till en ny katalog

Det här exemplet kopierar innehållet i källkatalogen C:\Logfiles och skapar en ny målkatalog. Den nya målkatalogen \Logs skapas i C:\Drawings.

Om du vill inkludera källkatalogens namn kopierar du till en befintlig målkatalog enligt exempel 2. Eller ge den nya målkatalogen samma namn som källkatalogen.

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

Anteckning

Om sökvägen innehåller \*kopieras allt kataloginnehåll, inklusive underkatalogträden, till den nya målkatalogen. Exempel:

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

Exempel 4: Kopiera en fil till den angivna katalogen och byt namn på filen

I det här exemplet används cmdleten Copy-Item för att kopiera skriptet Get-Widget.ps1\\Server01\Share från katalogen till \\Server12\ScriptArchive katalogen. Som en del av kopieringsåtgärden ändrar kommandot objektnamnet från Get-Widget.ps1 till Get-Widget.ps1.txt, så att det kan kopplas till e-postmeddelanden.

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

Exempel 5: Kopiera en fil till en fjärrdator

En session skapas på fjärrdatorn med namnet Server01 med autentiseringsuppgifterna Contoso\User01 för och lagrar resultatet i variabeln med namnet $Session.

Cmdleten Copy-ItemD:\Folder001 kopieras test.log från mappen till C:\Folder001_Copy mappen på fjärrdatorn med hjälp av sessionsinformationen som lagras i variabeln $Session . Den ursprungliga filen tas inte bort.

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

Exempel 6: Kopiera en mapp till en fjärrdator

En session skapas på fjärrdatorn med namnet Server01 med autentiseringsuppgifterna Contoso\User01 för och lagrar resultatet i variabeln med namnet $Session.

Cmdleten Copy-ItemD:\Folder002 kopierar mappen till C:\Folder002_Copy katalogen på fjärrdatorn med hjälp av sessionsinformationen som lagras i variabeln $Session . Undermappar eller filer kopieras inte utan växeln Recurse . Åtgärden skapar Folder002_Copy mappen om den inte redan finns.

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

Exempel 7: Kopiera rekursivt hela innehållet i en mapp till en fjärrdator

En session skapas på fjärrdatorn med namnet Server01 med autentiseringsuppgifterna Contoso\User01 för och lagrar resultatet i variabeln med namnet $Session.

Cmdleten Copy-Item kopierar hela innehållet från D:\Folder003 mappen till C:\Folder003_Copy katalogen på fjärrdatorn med hjälp av sessionsinformationen som lagras i variabeln $Session . Undermapparna kopieras med sina filträd intakta. Åtgärden skapar Folder003_Copy mappen om den inte redan finns.

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

Exempel 8: Kopiera en fil till en fjärrdator och byt sedan namn på filen

En session skapas på fjärrdatorn med namnet Server01 med autentiseringsuppgifterna Contoso\User01 för och lagrar resultatet i variabeln med namnet $Session.

Cmdleten Copy-ItemD:\Folder004 kopieras scriptingexample.ps1 från mappen till C:\Folder004_Copy mappen på fjärrdatorn med hjälp av sessionsinformationen som lagras i variabeln $Session . Som en del av kopieringsåtgärden ändrar kommandot objektnamnet från scriptingexample.ps1 till scriptingexample_copy.ps1, så att det kan kopplas till e-postmeddelanden. Den ursprungliga filen tas inte bort.

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

Exempel 9: Kopiera en fjärrfil till den lokala datorn

En session skapas på fjärrdatorn med namnet Server01 med autentiseringsuppgifterna Contoso\User01 för och lagrar resultatet i variabeln med namnet $Session.

Cmdleten Copy-Item kopieras test.log från fjärrmappen C:\MyRemoteData\ till den lokala D:\MyLocalData mappen med hjälp av sessionsinformationen som lagras i variabeln $Session . Den ursprungliga filen tas inte bort.

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

Exempel 10: Kopiera hela innehållet i en fjärrmapp till den lokala datorn

En session skapas på fjärrdatorn med namnet Server01 med autentiseringsuppgifterna Contoso\User01 för och lagrar resultatet i variabeln med namnet $Session.

Cmdleten Copy-Item kopierar hela innehållet från fjärrmappen C:\MyRemoteData\scripts till den lokala D:\MyLocalData mappen med hjälp av sessionsinformationen som lagras i variabeln $Session . Om mappen scripts innehåller filer i undermappar kopieras dessa undermappar med sina filträd intakta.

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

Exempel 11: Kopiera rekursivt hela innehållet i en fjärrmapp till den lokala datorn

En session skapas på fjärrdatorn med namnet Server01 med autentiseringsuppgifterna Contoso\User01 för och lagrar resultatet i variabeln med namnet $Session.

Cmdleten Copy-Item kopierar hela innehållet från fjärrmappen C:\MyRemoteData\scripts till den lokala D:\MyLocalData\scripts mappen med hjälp av sessionsinformationen som lagras i variabeln $Session . Eftersom parametern Recurse används skapar åtgärden mappen scripts om den inte redan finns. Om mappen scripts innehåller filer i undermappar kopieras dessa undermappar med sina filträd intakta.

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

Exempel 12: Rekursivt kopiera filer från ett mappträd till den aktuella mappen

Det här exemplet visar hur du kopierar filer från en mappstruktur på flera nivåer till en enda platt mapp. De första tre kommandona visar den befintliga mappstrukturen och innehållet i två filer, båda namnen 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

Cmdleten Copy-Item har containerparametern inställd på .$false Detta gör att innehållet i källmappen kopieras men bevarar inte mappstrukturen. Observera att filer med samma namn skrivs över i målmappen.

Exempel 13: Använda filter för att kopiera objekt utan rekursion

Det här exemplet visar resultaten med hjälp av parametern Inkludera för att välja vilka objekt som ska kopieras.

I det här exemplet används följande mappstruktur som innehåller de filer som ska kopieras:

  • 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

I det här exemplet Copy-Item anropas med ett jokertecken för både parametrarna Path och Include . Om du anger ett jokertecken för parametern Path ser du till att alla filer och mappar som matchar D:\temp\tree\*bearbetas. Parametern Include filtrerar listan över objekt som ska bearbetas, vilket begränsar åtgärden till endast de sökvägar som börjar med 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

Parametern Include tillämpas på innehållet i D:\temp\tree mappen för att kopiera alla objekt som matchar ex*. Observera att utan rekursion D:\temp\out\examples kopieras mappen, men inget av dess innehåll kopieras.

Exempel 15: Använda filter för att kopiera objekt med rekursion

Det här exemplet visar resultaten med hjälp av parametern Inkludera för att välja vilka objekt som ska kopieras.

I det här exemplet används följande mappstruktur som innehåller de filer som ska kopieras:

  • 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

I det här exemplet Copy-Item anropas med ett jokertecken för både parametrarna Path och Include . Om du anger ett jokertecken för parametern Path ser du till att alla filer och mappar som matchar D:\temp\tree\*bearbetas. Parametern Include filtrerar listan över objekt som ska bearbetas, vilket begränsar åtgärden till endast de sökvägar som börjar med 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

Parametern Include tillämpas på innehållet i D:\temp\tree mappen för att kopiera alla objekt som matchar ex*. Observera att med rekursion D:\temp\out\examples kopieras mappen tillsammans med alla filer och undermappar. Kopian innehåller filer som inte matchar inkluderingsfiltret. När du använder Copy-Itemgäller filtren endast för den översta nivån som anges av parametern Path . Sedan tillämpas rekursion på de matchande objekten.

Anteckning

Beteendet för parametern Exkludera är detsamma som det som beskrivs i det här exemplet, förutom att det begränsar åtgärden till endast de sökvägar som inte matchar mönstret.

Exempel 15: Begränsa filerna så att de rekursivt kopieras från en sökväg som har angetts med jokertecken

Det här exemplet visar hur du begränsar de filer som rekursivt kopieras från en sökväg med jokertecken till en annan mapp. Exempel 13 visar att parametern Include inte kan användas för att begränsa filerna som rekursivt kopieras från en mapp eftersom parametern Include endast filtrerar på sökvägarna som matchas för en sökväg med jokertecken. I stället kan du använda Get-ChildItem för att hitta de objekt som du vill kopiera och skicka objekten till Copy-Item.

I det här exemplet används följande mappstruktur som innehåller de filer som ska kopieras:

  • 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

Om du vill kopiera alla objekt som börjar med ex*använder Get-ChildItem du parametrarna Recurse och Filter och skicka resultatet till 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

Copy-ItemTill skillnad från , gäller filterparametern för Get-ChildItem för de objekt som identifieras under rekursionen. På så sätt kan du hitta, filtrera och sedan kopiera objekt rekursivt.

Parametrar

-Confirm

Uppmanar dig att bekräfta innan du kör cmdleten.

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

-Container

Anger att denna cmdlet bevarar containerobjekt under kopieringsåtgärden. Som standard är containerparametern inställd på True.

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

-Credential

Anteckning

Den här parametern stöds inte av några providers som är installerade med PowerShell. Om du vill personifiera en annan användare eller höja dina autentiseringsuppgifter när du kör den här cmdleten använder du Invoke-Command.

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

-Destination

Anger sökvägen till den nya platsen. Standardvärdet är den aktuella katalogen.

Om du vill byta namn på objektet som kopieras anger du ett nytt namn i värdet för målparametern.

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

-Exclude

Anger ett eller flera sökvägselement eller mönster, till exempel "*.txt", för att begränsa cmdletens åtgärd. Värdet för den här parametern filtreras mot resultatet med jokerteckenmatchning för parametern Path , inte det slutliga resultatet. Den här parametern är endast effektiv när sökvägen anges med ett eller flera jokertecken. Eftersom den här parametern endast filtrerar på sökvägarna som matchas för parametern Path filtreras inga objekt som identifieras när de upprepas via underordnade mappar med parametern Recurse .

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

-Filter

Anger ett filter för att kvalificera parametern Path . FileSystem-providern är den enda installerade PowerShell-providern som stöder användning av filter. Du hittar syntaxen för filterspråket FileSystem i about_Wildcards. Filter är mer effektiva än andra parametrar, eftersom providern tillämpar dem när cmdleten hämtar objekten i stället för att Låta PowerShell filtrera objekten efter att de har hämtats.

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

-Force

Anger att denna cmdlet kopierar objekt som inte kan ändras på annat sätt, till exempel kopiera över en skrivskyddad fil eller ett alias.

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

-FromSession

Anger PSSession-objektet som en fjärrfil kopieras från. När du använder den här parametern refererar parametrarna Path och LiteralPath till den lokala sökvägen på fjärrdatorn.

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

-Include

Anger ett eller flera sökvägselement eller mönster, till exempel "*.txt", för att begränsa cmdletens åtgärd. Värdet för den här parametern filtreras mot resultatet med jokerteckenmatchning för parametern Path , inte det slutliga resultatet. Den här parametern är endast effektiv när sökvägen anges med ett eller flera jokertecken. Eftersom den här parametern endast filtrerar på sökvägarna som matchas för parametern Path filtreras inga objekt som identifieras när de upprepas via underordnade mappar med parametern Recurse .

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

-LiteralPath

Anger en sökväg till en eller flera platser. Värdet för LiteralPath används exakt som det skrivs. Inga tecken tolkas som jokertecken. Om sökvägen innehåller escape-tecken omger du den med enkla citattecken. Enkla citattecken instruerar PowerShell att inte tolka några tecken som escape-sekvenser.

Mer information finns i about_Quoting_Rules.

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

-PassThru

Returnerar ett objekt som representerar det objekt som du arbetar med. Som standard genererar denna cmdlet inga utdata.

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

-Path

Anger sökvägen till de objekt som ska kopieras som en strängmatris. Jokertecken tillåts.

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

-Recurse

Anger att denna cmdlet gör en rekursiv kopia.

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

-ToSession

Anger PSSession-objektet som en fjärrfil kopieras till. När du använder den här parametern refererar målparametern till den lokala sökvägen på fjärrdatorn.

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

-WhatIf

Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.

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

Indata

String

Du kan skicka en sträng som innehåller en sökväg till denna cmdlet.

Utdata

None or an object representing the copied item

När du använder parametern PassThru returnerar den här cmdleten ett objekt som representerar det kopierade objektet. Annars genererar denna cmdlet inga utdata.

Kommentarer

Den här cmdleten är utformad för att fungera med data som exponeras av alla leverantörer. Om du vill visa en lista över de providrar som är tillgängliga i sessionen skriver du Get-PSProvider. Mer information finns i about_Providers.