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>]
Copy-Item
[-Path] <string[]>
[[-Destination] <string>]
[-Container]
[-Force]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Recurse]
[-PassThru]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Copy-Item
[[-Destination] <string>]
-LiteralPath <string[]>
[-Container]
[-Force]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Recurse]
[-PassThru]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Cmdleten Copy-Item
kopierar ett objekt från en plats till en annan plats 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 inte bort de objekt 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
Det här exemplet kopierar mar1604.log.txt
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
Det här exemplet kopierar innehållet i C:\Logfiles
katalogen till den befintliga C:\Drawings
katalogen. Katalogen Logfiles
kopieras inte.
Logfiles
Om katalogen har filer i underkataloger kopieras dessa underkataloger med sina filträd intakta. Som standard är containerparametern inställd på Sant, vilket bevarar katalogstrukturen.
Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings" -Recurse
Anteckning
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 namnge den nya målkatalogen med samma som källkatalogen.
Copy-Item -Path "C:\Logfiles" -Destination "C:\Drawings\Logs" -Recurse
Anteckning
Om sökvägen innehåller \*
kopieras alla katalogens filinnehå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 på ett säkert sätt.
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 kopieras test.log
från D:\Folder001
mappen till C:\Folder001_Copy
mappen på fjärrdatorn med hjälp av sessionsinformationen som lagras i variabeln $Session
Copy-Item
. 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-Item
D:\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 kopieras scriptingexample.ps1
från D:\Folder004
mappen till C:\Folder004_Copy
mappen på fjärrdatorn med hjälp av sessionsinformationen som lagras i variabeln $Session
Copy-Item
. 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ärrplatsen 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 skriptmappen har 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 skriptmappen om den inte redan finns. Om skriptmappen har 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: Kopiera filer rekursivt 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 tre första 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 inte bevarar 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 resultatet med hjälp av parametern Inkludera för att välja de objekt som ska kopieras.
I det här exemplet används följande mappstruktur som innehåller filerna 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 14: Använda filter för att kopiera objekt med rekursion
Det här exemplet visar resultatet med hjälp av parametern Inkludera för att välja de objekt som ska kopieras.
I det här exemplet används följande mappstruktur som innehåller filerna 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-Item
gä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 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 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 eftersom parametern Include endast filtrerar på sökvägarna som matchas för en sökväg med jokertecken kan parametern Include inte användas för att begränsa de filer som kopieras rekursivt från en mapp. 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 filerna 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 du Get-ChildItem
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-Item
Till skillnad från gäller filterparametern för Get-ChildItem
de objekt som identifierades 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 den här cmdleten bevarar containerobjekt under kopieringsåtgärden. Som standard är containerparametern inställd på Sant.
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 leverantörer 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 filtrerar mot jokerteckenmatchningsresultatet för parametern Path , inte det slutliga resultatet. Den här parametern gäller bara 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 filtrerar den inte några 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 effektivare än andra parametrar eftersom providern tillämpar dem när cmdleten hämtar objekten i stället för att PowerShell filtrerar objekten när 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 annars inte kan ändras, till exempel kopiering ö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
Det här är en dynamisk parameter som görs tillgänglig av FileSystem-providern .
Ange det PSSession-objekt 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.
Mer information finns i about_FileSystem_Provider.
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 filtrerar mot jokerteckenmatchningsresultatet för parametern Path , inte det slutliga resultatet. Den här parametern gäller bara 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 filtrerar den inte några 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 inom enkla citattecken. Enkla citattecken säger till 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 den här cmdleten 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 den här cmdleten gör en rekursiv kopia.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ToSession
Det här är en dynamisk parameter som görs tillgänglig av FileSystem-providern .
Ange det PSSession-objekt 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.
Mer information finns i about_FileSystem_Provider.
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
Du kan skicka en sträng som innehåller en sökväg till den här cmdleten.
Utdata
None
Som standard returnerar den här cmdleten inga utdata.
När du använder parametern PassThru returnerar den här cmdleten ett objekt som representerar det kopierade objektet.
Kommentarer
PowerShell innehåller följande alias för Copy-Item
:
- Alla plattformar:
copy
cpi
- Windows:
cp
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 leverantörer som är tillgängliga i sessionen skriver du Get-PSProvider
. Mer information finns i about_Providers.