Copy-Item

Zkopíruje položku z jednoho umístění do jiného.

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

Rutina Copy-Item zkopíruje položku z jednoho umístění do jiného umístění ve stejném oboru názvů. Může například zkopírovat soubor do složky, ale nemůže zkopírovat soubor na jednotku certifikátu.

Tato rutina neodstraní zkopírované položky nebo je neodstraní. Konkrétní položky, které může rutina kopírovat, závisí na poskytovateli PowerShellu, který položku zveřejňuje. Může například kopírovat soubory a adresáře v jednotce systému souborů a klíče registru a položky v jednotce registru.

Tato rutina může kopírovat a přejmenovat položky ve stejném příkazu. Pokud chcete položku přejmenovat, zadejte nový název do hodnoty parametru Destination . Pokud chcete přejmenovat položku a nekopírovat ji, použijte rutinu Rename-Item .

Příklady

Příklad 1: Zkopírování souboru do zadaného adresáře

Tento příklad zkopíruje mar1604.log.txt soubor do C:\Presentation adresáře. Původní soubor se neodstraní.

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

Příklad 2: Kopírování obsahu adresáře do existujícího adresáře

Tento příklad zkopíruje obsah C:\Logfiles adresáře do existujícího C:\Drawings adresáře. Adresář Logfiles se nezkopíruje.

Logfiles Pokud adresář obsahuje soubory v podadresářích, zkopírují se tyto podadresáře s nedotčenými stromy souborů. Ve výchozím nastavení je parametr Container nastaven na Hodnotu True, která zachovává adresářovou strukturu.

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

Poznámka:

Pokud cesta C:\Drawings neexistuje, rutina zkopíruje všechny soubory ze Logfiles složky do jednoho souboru C:\Drawings.

Příklad 3: Zkopírování adresáře a obsahu do nového adresáře

Tento příklad zkopíruje obsah zdrojového C:\Logfiles adresáře a vytvoří nový cílový adresář. Nový cílový adresář \Logs se vytvoří v C:\Drawingssouboru .

Pokud chcete zahrnout název zdrojového adresáře, zkopírujte ho do existujícího cílového adresáře, jak je znázorněno v příkladu 2. Nebo pojmenujte nový cílový adresář se stejným názvem jako zdrojový adresář.

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

Poznámka:

Pokud cesta obsahuje \*, veškerý obsah souboru adresáře, včetně stromů podadresáře, se zkopírují do nového cílového adresáře. Příklad:

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

Příklad 4: Zkopírování souboru do zadaného adresáře a přejmenování souboru

Tento příklad používá rutinu Copy-Item ke zkopírování Get-Widget.ps1 skriptu z \\Server01\Share adresáře do \\Server12\ScriptArchive adresáře. V rámci operace kopírování příkaz změní název položky na Get-Widget.ps1Get-Widget.ps1.txt, aby mohl být bezpečně připojen k e-mailovým zprávům.

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

Příklad 5: Zkopírování souboru do vzdáleného počítače

Relace se vytvoří na vzdáleném počítači s názvem Server01 s přihlašovacími údaji Contoso\User01 a uloží výsledky do proměnné s názvem $Session.

Rutina Copy-Item zkopíruje test.log ze D:\Folder001 složky do C:\Folder001_Copy složky ve vzdáleném počítači pomocí informací o relaci uložených $Session v proměnné. Původní soubor se neodstraní.

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

Příklad 6: Zkopírování složky do vzdáleného počítače

Relace se vytvoří na vzdáleném počítači s názvem Server01 s přihlašovacími údaji Contoso\User01 a uloží výsledky do proměnné s názvem $Session.

Rutina Copy-Item zkopíruje D:\Folder002 složku do C:\Folder002_Copy adresáře ve vzdáleném počítači pomocí informací o relaci uložených $Session v proměnné. Žádné podsložky nebo soubory se nekopírují bez použití přepínače Recurse . Operace vytvoří Folder002_Copy složku, pokud ještě neexistuje.

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

Příklad 7: Rekurzivně zkopírujte celý obsah složky do vzdáleného počítače.

Relace se vytvoří na vzdáleném počítači s názvem Server01 s přihlašovacími údaji Contoso\User01 a uloží výsledky do proměnné s názvem $Session.

Rutina Copy-Item zkopíruje celý obsah ze D:\Folder003 složky do C:\Folder003_Copy adresáře ve vzdáleném počítači pomocí informací o relaci uložených $Session v proměnné. Podsložky se zkopírují se stromy souborů beze změny. Operace vytvoří Folder003_Copy složku, pokud ještě neexistuje.

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

Příklad 8: Zkopírování souboru do vzdáleného počítače a následné přejmenování souboru

Relace se vytvoří na vzdáleném počítači s názvem Server01 s přihlašovacími údaji Contoso\User01 a uloží výsledky do proměnné s názvem $Session.

Rutina Copy-Item zkopíruje scriptingexample.ps1 ze D:\Folder004 složky do C:\Folder004_Copy složky ve vzdáleném počítači pomocí informací o relaci uložených $Session v proměnné. Původní soubor se neodstraní.

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

Příklad 9: Zkopírování vzdáleného souboru do místního počítače

Relace se vytvoří na vzdáleném počítači s názvem Server01 s přihlašovacími údaji Contoso\User01 a uloží výsledky do proměnné s názvem $Session.

Rutina Copy-Item zkopíruje test.log ze vzdálené C:\MyRemoteData\ složky do místní D:\MyLocalData složky pomocí informací o relaci uložených $Session v proměnné. Původní soubor se neodstraní.

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

Příklad 10: Zkopírování celého obsahu vzdálené složky do místního počítače

Relace se vytvoří na vzdáleném počítači s názvem Server01 s přihlašovacími údaji Contoso\User01 a uloží výsledky do proměnné s názvem $Session.

Rutina Copy-Item zkopíruje celý obsah ze vzdálené C:\MyRemoteData\scripts složky do místní D:\MyLocalData složky pomocí informací o relaci uložených $Session v proměnné. Pokud složka skriptů obsahuje soubory v podsložkách, zkopírují se tyto podsložky se stromy souborů beze změny.

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

Příklad 11: Rekurzivně zkopírujte celý obsah vzdálené složky do místního počítače.

Relace se vytvoří na vzdáleném počítači s názvem Server01 s přihlašovacími údaji Contoso\User01 a uloží výsledky do proměnné s názvem $Session.

Rutina Copy-Item zkopíruje celý obsah ze vzdálené C:\MyRemoteData\scripts složky do místní D:\MyLocalData\scripts složky pomocí informací o relaci uložených $Session v proměnné. Protože se používá parametr Recurse , operace vytvoří složku skriptů, pokud ještě neexistuje. Pokud složka skriptů obsahuje soubory v podsložkách, zkopírují se tyto podsložky se stromy souborů beze změny.

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

Příklad 12: Rekurzivní kopírování souborů ze stromu složek do aktuální složky

Tento příklad ukazuje, jak kopírovat soubory z víceúrovňové struktury složek do jedné ploché složky. První tři příkazy zobrazují existující strukturu složek a obsah dvou souborů, oba názvy 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

Rutina Copy-Itemparametr Container nastavený na $false. To způsobí, že se obsah zdrojové složky zkopíruje, ale nezachová strukturu složek. Všimněte si, že soubory se stejným názvem se přepíšou v cílové složce.

Příklad 13: Kopírování položek bez rekurze pomocí filtrů

Tento příklad ukazuje výsledky pomocí parametru Include k výběru položek, které se mají zkopírovat.

V tomto příkladu se používá následující struktura složek obsahující soubory, které se mají zkopírovat:

  • 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

V tomto příkladu Copy-Item se volá se zástupným znakem pro parametry Path i Include . Zadáním zástupné ikony pro parametr Path zajistíte, že zpracuje všechny soubory a složky, které odpovídají D:\temp\tree\*. Parametr Include filtruje seznam položek ke zpracování a omezuje operaci pouze na cesty, které začínají 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

Parametr Include se použije na obsah D:\temp\tree složky ke zkopírování všech položek, které odpovídají ex*. Všimněte si, že bez D:\temp\out\examples rekurze se složka zkopíruje, ale žádný z jeho obsahu se nezkopíruje.

Příklad 14: Kopírování položek s rekurzí pomocí filtrů

Tento příklad ukazuje výsledky pomocí parametru Include k výběru položek, které se mají zkopírovat.

V tomto příkladu se používá následující struktura složek obsahující soubory, které se mají zkopírovat:

  • 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

V tomto příkladu Copy-Item se volá se zástupným znakem pro parametry Path i Include . Zadáním zástupné ikony pro parametr Cesta zajistíte, že zpracuje všechny soubory a složky, které odpovídají D:\temp\tree\*. Parametr Include filtruje seznam položek ke zpracování a omezuje operaci pouze na cesty, které začínají 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

Parametr Include se použije na obsah D:\temp\tree složky ke zkopírování všech položek, které odpovídají ex*. Všimněte si, že při D:\temp\out\examples rekurzi se složka zkopíruje spolu se všemi soubory a podsložkami. Kopie obsahuje soubory, které neodpovídají filtru zahrnutí. Při použití Copy-Itemse filtry vztahují pouze na nejvyšší úroveň určenou parametrem Path . Rekurze se pak použije u odpovídajících položek.

Poznámka:

Chování parametru Exclude je stejné, jak je popsáno v tomto příkladu, s tím rozdílem, že omezuje operaci pouze na cesty, které neodpovídají vzoru.

Příklad 15: Omezte soubory na rekurzivní kopírování ze zástupné cesty určené zástupným znakem.

Tento příklad ukazuje, jak omezit rekurzivní kopírování souborů z cesty odpovídající zástupným znakům do jiné složky. Příklad 13 ukazuje, že vzhledem k tomu, že parametr Include filtruje pouze cesty, které jsou vyřešeny pro cestu se zástupným znakem, nelze parametr Include použít k omezení rekurzivního kopírování souborů ze složky. Místo toho můžete použít Get-ChildItem k vyhledání položek, které chcete zkopírovat a předat těmto položkám Copy-Item.

V tomto příkladu se používá následující struktura složek obsahující soubory, které se mají zkopírovat:

  • 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

Chcete-li zkopírovat všechny položky, které začínají ex*, použijte Get-ChildItem s parametry Recurse a Filter a kanál výsledky na 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

Na rozdíl od parametru Copy-ItemFilter platí pro Get-ChildItem položky zjištěné během rekurze. To umožňuje rekurzivně vyhledávat, filtrovat a kopírovat položky.

Parametry

-Confirm

Před spuštěním rutiny zobrazí výzvu k potvrzení.

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

-Container

Označuje, že tato rutina zachovává objekty kontejneru během operace kopírování. Ve výchozím nastavení je parametr Container nastaven na Hodnotu True.

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

-Credential

Poznámka:

Tento parametr nejsou podporovány žádnými poskytovateli nainstalovanými v PowerShellu. Pokud chcete zosobnit jiného uživatele nebo zvýšit úroveň přihlašovacích údajů při spuštění této rutiny, použijte Invoke-Command.

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

-Destination

Určuje cestu k novému umístění. Výchozí je aktuální adresář.

Chcete-li přejmenovat zkopírovanou položku, zadejte nový název v hodnotě parametru Destination .

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

-Exclude

Určuje jeden nebo více prvků cesty nebo vzorů, například "*.txt", aby se omezila operace této rutiny. Hodnota tohoto parametru filtruje výsledek odpovídající zástupným znakům parametru Path , nikoli konečné výsledky. Tento parametr je efektivní pouze v případě, že je zadána cesta s jedním nebo více zástupnými cardy. Vzhledem k tomu, že tento parametr filtruje pouze cesty vyřešené pro parametr Path , nefiltruje žádné položky zjištěné při opakování prostřednictvím podřízených složek s parametrem Recurse .

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

-Filter

Určuje filtr, který má kvalifikovat parametr Path . Zprostředkovatel fileSystem je jediným nainstalovaným poskytovatelem PowerShellu, který podporuje použití filtrů. Syntaxi jazyka filtru FileSystem najdete v about_Wildcards. Filtry jsou efektivnější než jiné parametry, protože je poskytovatel použije, když rutina získá objekty místo toho, aby objekty po jejich načtení vyfiltrovala PowerShell.

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

-Force

Označuje, že tato rutina kopíruje položky, které se jinak nedají změnit, například kopírování přes soubor nebo alias jen pro čtení.

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

-FromSession

Jedná se o dynamický parametr, který zpřístupnil zprostředkovatel FileSystem .

Zadejte objekt PSSession, ze kterého se kopíruje vzdálený soubor. Při použití tohoto parametru odkazují parametry Path a LiteralPath na místní cestu na vzdáleném počítači.

Další informace najdete v tématu about_FileSystem_Provider.

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

-Include

Určuje jeden nebo více prvků cesty nebo vzorů, například "*.txt", aby se omezila operace této rutiny. Hodnota tohoto parametru filtruje výsledek odpovídající zástupným znakům parametru Path , nikoli konečné výsledky. Tento parametr je efektivní pouze v případě, že je zadána cesta s jedním nebo více zástupnými cardy. Vzhledem k tomu, že tento parametr filtruje pouze cesty vyřešené pro parametr Path , nefiltruje žádné položky zjištěné při opakování prostřednictvím podřízených složek s parametrem Recurse .

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

-LiteralPath

Určuje cestu k jednomu nebo více umístěním. Hodnota LiteralPath se používá přesně tak, jak je zadána. Žádné znaky nejsou interpretovány jako zástupné znaky. Pokud cesta obsahuje řídicí znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby nepřekládaly žádné znaky jako řídicí sekvence.

Další informace najdete v tématu about_Quoting_Rules.

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

-PassThru

Vrátí objekt, který představuje položku, se kterou pracujete. Ve výchozím nastavení tato rutina negeneruje žádný výstup.

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

-Path

Určuje cestu k položkám, které se mají zkopírovat, jako pole řetězců. Jsou povoleny zástupné znaky.

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

-Recurse

Označuje, že tato rutina provede rekurzivní kopírování.

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

-ToSession

Jedná se o dynamický parametr, který zpřístupnil zprostředkovatel FileSystem .

Zadejte objekt PSSession, do kterého se kopíruje vzdálený soubor. Při použití tohoto parametru odkazuje parametr Destination na místní cestu na vzdáleném počítači.

Další informace najdete v tématu about_FileSystem_Provider.

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

-WhatIf

Zobrazuje, co by se stalo při spuštění rutiny. Rutina se nespustí.

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

Vstupy

String

Řetězec, který obsahuje cestu k této rutině, můžete převést.

Výstupy

None

Ve výchozím nastavení tato rutina nevrací žádný výstup.

PSObject

Pokud použijete parametr PassThru , tato rutina vrátí objekt představující zkopírovanou položku.

Poznámky

PowerShell obsahuje následující aliasy pro Copy-Item:

  • Všechny platformy:
    • copy
    • cpi
  • Windows:
    • cp

Tato rutina je navržená tak, aby fungovala s daty vystavenými jakýmkoli poskytovatelem. Pokud chcete zobrazit seznam poskytovatelů dostupných v relaci, zadejte Get-PSProvider. Další informace najdete v tématu about_Providers.