Copy-Item

Menyalin item dari satu lokasi ke lokasi lainnya.

Sintaks

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>]

Deskripsi

Copy-Item Cmdlet menyalin item dari satu lokasi ke lokasi lain di namespace yang sama. Misalnya, file dapat menyalin file ke folder, tetapi tidak dapat menyalin file ke drive sertifikat.

Cmdlet ini tidak memotong atau menghapus item yang sedang disalin. Item tertentu yang dapat disalin cmdlet bergantung pada penyedia PowerShell yang mengekspos item. Misalnya, file dan direktori dapat disalin dalam drive sistem file dan kunci registri dan entri di drive registri.

Cmdlet ini dapat menyalin dan mengganti nama item dalam perintah yang sama. Untuk mengganti nama item, masukkan nama baru dalam nilai parameter Tujuan . Untuk mengganti nama item dan tidak menyalinnya, gunakan Rename-Item cmdlet.

Contoh

Contoh 1: Menyalin file ke direktori yang ditentukan

Contoh ini menyalin mar1604.log.txt file ke C:\Presentation direktori. File asli tidak dihapus.

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

Contoh 2: Menyalin konten direktori ke direktori yang sudah ada

Contoh ini menyalin konten C:\Logfiles direktori ke direktori yang ada C:\Drawings . Logfiles Direktori tidak disalin.

Logfiles Jika direktori memiliki file dalam subdirektori, subdirektori tersebut disalin dengan pohon file mereka secara utuh. Secara default, parameter Kontainer diatur ke True, yang mempertahankan struktur direktori.

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

Catatan

Jika jalur C:\Drawings tidak ada cmdlet menyalin semua file dari Logfiles folder ke dalam satu file C:\Drawings.

Contoh 3: Menyalin direktori dan konten ke direktori baru

Contoh ini menyalin konten C:\Logfiles direktori sumber dan membuat direktori tujuan baru. Direktori tujuan baru, \Logs dibuat di C:\Drawings.

Untuk menyertakan nama direktori sumber, salin ke direktori tujuan yang sudah ada seperti yang ditunjukkan dalam Contoh 2. Atau, beri nama direktori tujuan baru dengan sama dengan direktori sumber.

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

Catatan

Jika Jalur menyertakan \*, semua konten file direktori, termasuk pohon subdirektori, disalin ke direktori tujuan baru. Contohnya:

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

Contoh 4: Salin file ke direktori yang ditentukan dan ganti nama file

Contoh ini menggunakan Copy-Item cmdlet untuk menyalin Get-Widget.ps1 skrip dari \\Server01\Share direktori ke \\Server12\ScriptArchive direktori. Sebagai bagian dari operasi salin, perintah mengubah nama item dari Get-Widget.ps1 menjadi Get-Widget.ps1.txt, sehingga dapat dilampirkan dengan aman ke pesan email.

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

Contoh 5: Menyalin file ke komputer jarak jauh

Sesi dibuat ke komputer jarak jauh bernama Server01 dengan kredensial Contoso\User01 dan menyimpan hasilnya dalam variabel bernama $Session.

Copy-Item Cmdlet menyalin test.log dari D:\Folder001 folder ke C:\Folder001_Copy folder di komputer jarak jauh menggunakan informasi sesi yang disimpan dalam $Session variabel. File asli tidak dihapus.

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

Contoh 6: Menyalin folder ke komputer jarak jauh

Sesi dibuat ke komputer jarak jauh bernama Server01 dengan kredensial Contoso\User01 dan menyimpan hasilnya dalam variabel bernama $Session.

Copy-Item Cmdlet menyalin D:\Folder002 folder ke C:\Folder002_Copy direktori di komputer jarak jauh menggunakan informasi sesi yang disimpan dalam $Session variabel. Subfolder atau file apa pun tidak disalin tanpa menggunakan sakelar Berulang . Operasi membuat Folder002_Copy folder jika belum ada.

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

Contoh 7: Menyalin seluruh konten folder secara rekursif ke komputer jarak jauh

Sesi dibuat ke komputer jarak jauh bernama Server01 dengan kredensial Contoso\User01 dan menyimpan hasilnya dalam variabel bernama $Session.

Copy-Item Cmdlet menyalin seluruh konten dari D:\Folder003 folder ke C:\Folder003_Copy direktori di komputer jarak jauh menggunakan informasi sesi yang disimpan dalam $Session variabel. Subfolder disalin dengan pohon file mereka secara utuh. Operasi membuat Folder003_Copy folder jika belum ada.

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

Contoh 8: Salin file ke komputer jarak jauh lalu ganti nama file

Sesi dibuat ke komputer jarak jauh bernama Server01 dengan kredensial Contoso\User01 dan menyimpan hasilnya dalam variabel bernama $Session.

Copy-Item Cmdlet menyalin scriptingexample.ps1 dari D:\Folder004 folder ke C:\Folder004_Copy folder di komputer jarak jauh menggunakan informasi sesi yang disimpan dalam $Session variabel. File asli tidak dihapus.

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

Contoh 9: Menyalin file jarak jauh ke komputer lokal

Sesi dibuat ke komputer jarak jauh bernama Server01 dengan kredensial Contoso\User01 dan menyimpan hasilnya dalam variabel bernama $Session.

Copy-Item Cmdlet menyalin test.log dari jarak jauh C:\MyRemoteData\ ke folder lokal D:\MyLocalData menggunakan informasi sesi yang disimpan dalam $Session variabel. File asli tidak dihapus.

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

Contoh 10: Menyalin seluruh konten folder jarak jauh ke komputer lokal

Sesi dibuat ke komputer jarak jauh bernama Server01 dengan kredensial Contoso\User01 dan menyimpan hasilnya dalam variabel bernama $Session.

Copy-Item Cmdlet menyalin seluruh konten dari folder jarak jauh C:\MyRemoteData\scripts ke folder lokal D:\MyLocalData menggunakan informasi sesi yang disimpan dalam $Session variabel. Jika folder skrip memiliki file di subfolder, subfolder tersebut disalin dengan pohon file mereka secara utuh.

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

Contoh 11: Menyalin seluruh konten folder jarak jauh secara rekursif ke komputer lokal

Sesi dibuat ke komputer jarak jauh bernama Server01 dengan kredensial Contoso\User01 dan menyimpan hasilnya dalam variabel bernama $Session.

Copy-Item Cmdlet menyalin seluruh konten dari folder jarak jauh C:\MyRemoteData\scripts ke folder lokal D:\MyLocalData\scripts menggunakan informasi sesi yang disimpan dalam $Session variabel. Karena parameter Berulang digunakan, operasi membuat folder skrip jika belum ada. Jika folder skrip memiliki file di subfolder, subfolder tersebut disalin dengan pohon file mereka secara utuh.

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

Contoh 12: Menyalin file secara rekursif dari pohon folder ke folder saat ini

Contoh ini menunjukkan cara menyalin file dari struktur folder multitingkat ke dalam satu folder datar. Tiga perintah pertama menunjukkan struktur folder yang ada dan konten dua file, kedua nama 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

Copy-Item Cmdlet memiliki parameter Kontainer yang diatur ke $false. Ini menyebabkan konten folder sumber disalin tetapi tidak mempertahankan struktur folder. Perhatikan bahwa file dengan nama yang sama ditimpa di folder tujuan.

Contoh 13: Menggunakan filter untuk menyalin item tanpa rekursi

Contoh ini memperlihatkan hasil menggunakan parameter Sertakan untuk memilih item yang akan disalin.

Contoh ini menggunakan struktur folder berikut yang berisi file yang akan disalin:

  • 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

Dalam contoh ini, Copy-Item dipanggil dengan kartubebas untuk parameter Jalur dan Sertakan . Menentukan kartubebas untuk parameter Jalur memastikan bahwa ia memproses semua file dan folder yang cocok D:\temp\tree\*dengan . Parameter Sertakan memfilter daftar item yang akan diproses, membatasi operasi hanya untuk jalur yang dimulai dengan 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

Parameter Sertakan diterapkan ke konten D:\temp\tree folder untuk menyalin semua item yang cocok ex*dengan . Perhatikan bahwa, tanpa rekursi, folder disalin D:\temp\out\examples , tetapi tidak ada kontennya yang disalin.

Contoh 14: Menggunakan filter untuk menyalin item dengan rekursi

Contoh ini memperlihatkan hasil menggunakan parameter Sertakan untuk memilih item yang akan disalin.

Contoh ini menggunakan struktur folder berikut yang berisi file yang akan disalin:

  • 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

Dalam contoh ini, Copy-Item dipanggil dengan kartubebas untuk parameter Jalur dan Sertakan . Menentukan kartubebas untuk parameter Jalur memastikan bahwa ia memproses semua file dan folder yang cocok D:\temp\tree\*. Parameter Sertakan memfilter daftar item yang akan diproses, membatasi operasi hanya untuk jalur yang dimulai dengan 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

Parameter Sertakan diterapkan ke konten D:\temp\tree folder untuk menyalin semua item yang cocok ex*dengan . Perhatikan bahwa, dengan rekursi, folder disalin D:\temp\out\examples bersama dengan semua file dan subfolder. Salinan menyertakan file yang tidak cocok dengan filter sertakan. Saat menggunakan Copy-Item, filter hanya berlaku untuk tingkat atas yang ditentukan oleh parameter Jalur . Kemudian rekursi diterapkan ke item yang cocok.

Catatan

Perilaku parameter Kecualikan sama seperti yang dijelaskan dalam contoh ini, kecuali membatasi operasi hanya untuk jalur yang tidak cocok dengan pola.

Contoh 15: Batasi file untuk disalin secara rekursif dari jalur yang ditentukan kartubebas

Contoh ini menunjukkan cara membatasi file yang disalin secara rekursif dari jalur pencocokan kartubebas ke folder lain. Contoh 13 menunjukkan bahwa, karena parameter Sertakan hanya filter pada jalur yang diselesaikan untuk Jalur yang menentukan kartubebas, parameter Sertakan tidak dapat digunakan untuk membatasi file yang disalin secara rekursif dari folder. Sebagai gantinya, Anda dapat menggunakan Get-ChildItem untuk menemukan item yang ingin Anda salin dan teruskan item tersebut ke Copy-Item.

Contoh ini menggunakan struktur folder berikut yang berisi file yang akan disalin:

  • 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

Untuk menyalin semua item yang dimulai dengan ex*, gunakan Get-ChildItem dengan parameter Recurse dan Filter dan pipa hasilnya ke 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-ItemTidak seperti , parameter Filter untuk berlaku untuk Get-ChildItem item yang ditemukan selama rekursi. Ini memungkinkan Anda menemukan, memfilter, lalu menyalin item secara rekursif.

Parameter

-Confirm

Meminta Anda mengonfirmasi sebelum menjalankan cmdlet.

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

-Container

Menunjukkan bahwa cmdlet ini mempertahankan objek kontainer selama operasi salin. Secara default, parameter Kontainer diatur ke True.

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

-Credential

Catatan

Parameter ini tidak didukung oleh penyedia apa pun yang diinstal dengan PowerShell. Untuk meniru pengguna lain, atau meningkatkan kredensial Anda saat menjalankan cmdlet ini, gunakan Invoke-Command.

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

-Destination

Menentukan jalur ke lokasi baru. Defaultnya adalah direktori saat ini.

Untuk mengganti nama item yang sedang disalin, tentukan nama baru dalam nilai parameter Tujuan .

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

-Exclude

Menentukan satu atau beberapa elemen atau pola jalur, seperti "*.txt", untuk membatasi operasi cmdlet ini. Nilai parameter ini memfilter terhadap hasil pencocokan kartubebas dari parameter Path , bukan hasil akhir. Parameter ini hanya efektif ketika Jalur ditentukan dengan satu atau beberapa kartubebas. Karena parameter ini hanya memfilter pada jalur yang diselesaikan untuk parameter Jalur , parameter ini tidak memfilter item apa pun yang ditemukan saat berulang melalui folder anak dengan parameter Berulang .

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

-Filter

Menentukan filter untuk memenuhi syarat parameter Jalur . Penyedia FileSystem adalah satu-satunya penyedia PowerShell yang diinstal yang mendukung penggunaan filter. Anda dapat menemukan sintaks untuk bahasa filter FileSystem dalam about_Wildcards. Filter lebih efisien daripada parameter lain, karena penyedia menerapkannya ketika cmdlet mendapatkan objek daripada memfilter PowerShell objek setelah diambil.

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

-Force

Menunjukkan bahwa cmdlet ini menyalin item yang tidak dapat diubah, seperti menyalin melalui file baca-saja atau alias.

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

-FromSession

Ini adalah parameter dinamis yang disediakan oleh penyedia FileSystem .

Tentukan objek PSSession tempat file jarak jauh sedang disalin. Saat Anda menggunakan parameter ini, parameter Jalur dan LiteralPath merujuk ke jalur lokal pada komputer jarak jauh.

Untuk informasi selengkapnya, lihat about_FileSystem_Provider.

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

-Include

Menentukan satu atau beberapa elemen atau pola jalur, seperti "*.txt", untuk membatasi operasi cmdlet ini. Nilai parameter ini memfilter terhadap hasil pencocokan kartubebas dari parameter Path , bukan hasil akhir. Parameter ini hanya efektif ketika Jalur ditentukan dengan satu atau beberapa kartubebas. Karena parameter ini hanya memfilter pada jalur yang diselesaikan untuk parameter Jalur , parameter ini tidak memfilter item apa pun yang ditemukan saat berulang melalui folder anak dengan parameter Berulang .

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

-LiteralPath

Menentukan jalur ke satu atau beberapa lokasi. Nilai LiteralPath digunakan persis seperti yang ditik. Tidak ada karakter yang ditafsirkan sebagai kartubebas. Jika jalur menyertakan karakter escape, sertakan dalam tanda kutip tunggal. Tanda kutip tunggal memberi tahu PowerShell untuk tidak menginterpretasikan karakter apa pun sebagai urutan escape.

Untuk informasi selengkapnya, lihat about_Quoting_Rules.

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

-PassThru

Mengembalikan objek yang mewakili item tempat Anda bekerja. Secara default, cmdlet ini tidak menghasilkan output apa pun.

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

-Path

Menentukan, sebagai array string, jalur ke item yang akan disalin. Karakter kartubebas diizinkan.

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

-Recurse

Menunjukkan bahwa cmdlet ini melakukan salinan rekursif.

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

-ToSession

Ini adalah parameter dinamis yang disediakan oleh penyedia FileSystem .

Tentukan objek PSSession tempat file jarak jauh sedang disalin. Saat Anda menggunakan parameter ini, parameter Tujuan mengacu pada jalur lokal pada komputer jarak jauh.

Untuk informasi selengkapnya, lihat about_FileSystem_Provider.

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

-WhatIf

Menunjukkan apa yang akan terjadi jika cmdlet berjalan. Cmdlet tidak dijalankan.

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

Input

String

Anda dapat menyalurkan string yang berisi jalur ke cmdlet ini.

Output

None

Secara default, cmdlet ini tidak mengembalikan output.

PSObject

Saat Anda menggunakan parameter PassThru , cmdlet ini mengembalikan objek yang mewakili item yang disalin.

Catatan

PowerShell menyertakan alias berikut untuk Copy-Item:

  • Semua platform:
    • copy
    • cpi
  • Windows:
    • cp

Cmdlet ini dirancang untuk bekerja dengan data yang diekspos oleh penyedia mana pun. Untuk mencantumkan penyedia yang tersedia di sesi Anda, ketik Get-PSProvider. Untuk informasi selengkapnya, lihat about_Providers.