Copy-Item trong PowerShell

by Khánh Linh

13/09/2021, 10:24 AM   |    13/09/2021, 10:24 AM   |    2.1K   |    0

Lệnh Copy-Item thực hiện sao chép một tệp từ vị trí này sang vị trí khác được chỉ định. Có thể sao chép trong ổ đĩa hệ thống, nếu sao chép sang ổ đĩa khác có xác thực bảo mật sẽ có thể gặp lỗi.

- Cmdlet này chỉ sao chép chứ không cắt hoặc xoá đối tượng được sao chép.
- Bạn có thể sao chép và đổi tên đối tượng trong cùng một lệnh với việc thêm tham số Destination 


Các ví dụ

Ví dụ 1: Sao chép vào thư mục được chỉ định

Sao chép tệp Hello.txt vào thư mục C:\demo\tháng 1. Tệp Hello.txt ban đầu sẽ không bị xoá.
Copy-Item "C:\demo\Hello.txt" -Destination "C:\demo\tháng 1" 
 

Ví dụ 2: Sao chép nội dung của thư mục vào thư mục được chỉ định

Copy-Item -Path "C:\demo\*" -Destination "C:\demo1" -Recurse 


- Ví dụ trên copy toàn bộ nội dung trong thư mục demo vào thư mục demo1. Thư mục demo sẽ không được sao chép.
- Nếu muốn chép cả thư mục demo thì bỏ dấu \* đi:
Copy-Item -Path "C:\demo" -Destination "C:\demo1" -Recurse 


- Nếu trong thư mục demo chứa các thư mục con, các thư mục con đó sẽ được sao chép nguyên vẹn. Theo mặc định tham số Container được đặt thành True, bảo toàn cấu trúc thư mục.
 

Ví dụ 3: Sao chép đồng thời tạo thư mục mới để đổ dữ liệu vào

- Cái này đơn giản là bạn đặt tên cho một thư mục mới ở địa chỉ đích, ở đây mình đặt là test
Copy-Item -Path "C:\demo" -Destination "C:\demo1\test" -Recurse 


Chú ý: Nếu bạn thêm \* ở thư mục nguồn, thì tất cả các thư mục con trong thư mục demo nếu có sẽ không được sao chép sang thư mục mới :
Copy-Item -Path "C:\demo\*" -Destination "C:\demo1\test" -Recurse 

 

Ví dụ 4: Copy tệp và đổi tên

Copy-Item "C:\demo\File.txt" -Destination "C:\demo1\File1.txt" 


- Như trên bạn chỉ cần đổi tên file thành File1.txt ở địa chỉ đích.
 

Ví dụ 5: Sao chép tệp vào máy tính từ xa (Remote Computer)

Ngoài việc sao chép qua lại trên máy tính nội bộ, bạn cũng có thể sao chép tệp tin sang máy tính từ xa bằng đoạn mã sau:
 
$Source = "C:\demo\File.txt"
$Dest   = "\\admin-pc\images"
$Username = "admin"
$Password = ConvertTo-SecureString "121234567" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential($Username, $Password)

New-PSDrive -Name J -PSProvider FileSystem -Root $Dest -Credential $mycreds -Persist
Copy-Item -Path $Source -Destination "J:\Myfile.txt" 


Ví dụ trên sử dụng New-PSDrive, bạn có thể xem chi tiết New-PSDrive ở phần sau.
$Dest là đường dẫn tới máy có tên admin-pc, bạn có thể thay bằng địa chỉ IP. Images là thư  mục trên máy từ xa đã được chia sẻ.

Các Parameters thường sử dụng:

Confirm: Xác nhận trước khi thực hiện lệnh
Container: Bảo tồn các cây thư mục trong quá trình sao chép, mặc định là True.
Credential: Xác thực người dùng
Destination: Chỉ định đường dẫn đích
Exclude: Loại trừ