Copy-Item trong PowerShell
by Khánh Linh
13/09/2021, 10:24 AM | 13/09/2021, 10:24 AM | 2.1K | 040146
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ừ