Copy-Item
Zkopíruje položku z jednoho umístění do jiného.
Syntaxe
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
stromu složek do jedné složky C:\Drawings
a přepíše všechny soubory se stejným názvem.
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:\Drawings
souboru .
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.ps1
Get-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-Item
má parametr 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-Item
se 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-Item
Filter 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í.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | 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.
Typ: | SwitchParameter |
Position: | Named |
Default value: | True |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | 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.
Typ: | PSCredential |
Position: | Named |
Default value: | Current user |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | 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 .
Typ: | String |
Position: | 1 |
Default value: | Current directory |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | 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 .
Typ: | String[] |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | 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.
Typ: | String |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | 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í.
Typ: | SwitchParameter |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | 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.
Typ: | PSSession |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | 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 .
Typ: | String[] |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | 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.
Typ: | String[] |
Aliasy: | PSPath, LP |
Position: | Named |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-PassThru
Vrátí objekt, který představuje položku, se kterou pracujete. Ve výchozím nastavení tato rutina negeneruje žádný výstup.
Typ: | SwitchParameter |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Path
Určuje cestu k položkám, které se mají zkopírovat, jako pole řetězců. Jsou povoleny zástupné znaky.
Typ: | String[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | True |
-Recurse
Označuje, že tato rutina provede rekurzivní kopírování.
Typ: | SwitchParameter |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | 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.
Typ: | PSSession |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-WhatIf
Zobrazuje, co by se stalo při spuštění rutiny. Rutina se nespustí.
Typ: | SwitchParameter |
Aliasy: | wi |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
Ř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.
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.