Lệnh Remove-Item
là một cmdlet mạnh mẽ trong PowerShell, cho phép bạn xóa các mục khác nhau như tệp, thư mục, khóa registry, biến, alias và hàm. Nó được hỗ trợ bởi nhiều provider, giúp bạn quản lý hệ thống một cách linh hoạt.
Cú Pháp
Remove-Item [-Path] <string> [-Filter <string>] [-Include <string>] [-Exclude <string>] [-Recurse] [-Force] [-Credential <pscredential>] [-WhatIf] [-Confirm] [-Stream <string>] [<CommonParameters>]
Remove-Item -LiteralPath <string> [-Filter <string>] [-Include <string>] [-Exclude <string>] [-Recurse] [-Force] [-Credential <pscredential>] [-WhatIf] [-Confirm] [-Stream <string>] [<CommonParameters>]
Remove-Item [-Path] <string> [-Filter <string>] [-Include <string>] [-Exclude <string>] [-Recurse] [-Force] [-Credential <pscredential>] [-WhatIf] [-Confirm] [-DeleteKey] [<CommonParameters>]
Remove-Item -LiteralPath <string> [-Filter <string>] [-Include <string>] [-Exclude <string>] [-Recurse] [-Force] [-Credential <pscredential>] [-WhatIf] [-Confirm] [-DeleteKey] [<CommonParameters>]
Remove-Item [-Path] <string> [-Filter <string>] [-Include <string>] [-Exclude <string>] [-Recurse] [-Force] [-Credential <pscredential>] [-WhatIf] [-Confirm] [<CommonParameters>]
Remove-Item -LiteralPath <string> [-Filter <string>] [-Include <string>] [-Exclude <string>] [-Recurse] [-Force] [-Credential <pscredential>] [-WhatIf] [-Confirm] [<CommonParameters>]
Mô Tả Chi Tiết
Cmdlet Remove-Item
xóa một hoặc nhiều mục. Do được hỗ trợ bởi nhiều provider, nó có thể xóa nhiều loại mục khác nhau, bao gồm tệp, thư mục, khóa registry, biến, alias và hàm.
Các Ví Dụ Sử Dụng Lệnh Remove-Item
Ví dụ 1: Xóa các tệp có bất kỳ phần mở rộng nào
Ví dụ này xóa tất cả các tệp có tên bao gồm dấu chấm (.
) từ thư mục C:Test
. Vì lệnh chỉ định dấu chấm, lệnh sẽ không xóa thư mục hoặc tệp không có phần mở rộng.
Remove-Item C:Test*.*
Ví dụ 2: Xóa các tệp tài liệu trong một thư mục
Ví dụ này xóa tất cả các tệp có phần mở rộng .doc
và tên không bao gồm *1*
khỏi thư mục hiện tại.
Remove-Item * -Include *.doc -Exclude *1*
Nó sử dụng ký tự đại diện (*
) để chỉ định nội dung của thư mục hiện tại. Nó sử dụng các tham số Include và Exclude để chỉ định các tệp cần xóa.
Ví dụ 3: Xóa các tệp ẩn, chỉ đọc
Lệnh này xóa một tệp vừa ẩn vừa chỉ đọc.
Remove-Item -Path C:Testhidden-RO-file.txt -Force
Nó sử dụng tham số Path để chỉ định tệp. Nó sử dụng tham số Force để xóa nó. Nếu không có Force, bạn không thể xóa các tệp chỉ đọc hoặc ẩn.
Ví dụ 4: Xóa các tệp trong các thư mục con một cách đệ quy
Lệnh này xóa tất cả các tệp CSV trong thư mục hiện tại và tất cả các thư mục con một cách đệ quy.
Vì tham số Recurse trong Remove-Item
có một vấn đề đã biết, lệnh trong ví dụ này sử dụng Get-ChildItem
để lấy các tệp mong muốn, sau đó sử dụng toán tử pipeline để chuyển chúng đến Remove-Item
.
Get-ChildItem * -Include *.csv -Recurse | Remove-Item
Trong lệnh Get-ChildItem
, Path có giá trị là (*
), đại diện cho nội dung của thư mục hiện tại. Nó sử dụng Include để chỉ định loại tệp CSV và nó sử dụng Recurse để thực hiện truy xuất đệ quy. Nếu bạn cố gắng chỉ định loại tệp trong đường dẫn, chẳng hạn như -Path *.csv
, cmdlet sẽ diễn giải chủ đề của tìm kiếm là một tệp không có mục con và Recurse sẽ không thành công.
Lưu ý: Hành vi này đã được sửa trong Windows phiên bản 1909 trở lên.
Ví dụ 5: Xóa các khóa con một cách đệ quy
Lệnh này xóa khóa registry “OldApp” và tất cả các khóa con và giá trị của nó. Nó sử dụng Remove-Item
để xóa khóa. Đường dẫn được chỉ định, nhưng tên tham số tùy chọn (Path) bị bỏ qua.
Tham số Recurse xóa tất cả nội dung của khóa “OldApp” một cách đệ quy. Nếu khóa chứa các khóa con và bạn bỏ qua tham số Recurse, bạn sẽ được nhắc xác nhận rằng bạn muốn xóa nội dung của khóa.
Remove-Item HKLM:SoftwareMyCompanyOldApp -Recurse
Ví dụ 6: Xóa các tệp có ký tự đặc biệt
Ví dụ sau đây cho thấy cách xóa các tệp có chứa các ký tự đặc biệt như dấu ngoặc vuông hoặc dấu ngoặc đơn.
Get-ChildItem Directory: C:tempDownloads Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 6/1/2018 12:19 PM 1362 myFile.txt -a--- 6/1/2018 12:30 PM 1132 myFile[1].txt -a--- 6/1/2018 12:19 PM 1283 myFile[2].txt -a--- 6/1/2018 12:19 PM 1432 myFile[3].txt Get-ChildItem | Where-Object Name -Like '*`[*' Directory: C:tempDownloads Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 6/1/2018 12:30 PM 1132 myFile[1].txt -a--- 6/1/2018 12:19 PM 1283 myFile[2].txt -a--- 6/1/2018 12:19 PM 1432 myFile[3].txt Get-ChildItem | Where-Object Name -Like '*`[*' | ForEach-Object { Remove-Item -LiteralPath $_.Name } Get-ChildItem Directory: C:tempDownloads Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 6/1/2018 12:19 PM 1362 myFile.txt
Ví dụ 7: Xóa một luồng dữ liệu thay thế
Ví dụ này cho thấy cách sử dụng tham số động Stream của cmdlet Remove-Item
để xóa một luồng dữ liệu thay thế. Tham số stream được giới thiệu trong Windows PowerShell 3.0.
Get-Item C:TestCopy-Script.ps1 -Stream Zone.Identifier FileName: \C:TestCopy-Script.ps1 Stream Length ------ ------ Zone.Identifier 26 Remove-Item C:TestCopy-Script.ps1 -Stream Zone.Identifier Get-Item C:TestCopy-Script.ps1 -Stream Zone.Identifier Get-Item : Could not open alternate data stream 'Zone.Identifier' of file 'C:TestCopy-Script.ps1'.
Tham số Stream của Get-Item
lấy luồng Zone.Identifier
của tệp Copy-Script.ps1
. Remove-Item
sử dụng tham số Stream để xóa luồng Zone.Identifier
của tệp. Cuối cùng, cmdlet Get-Item
cho thấy rằng luồng Zone.Identifier
đã bị xóa.
Các Tham Số Của Lệnh Remove-Item
- -Confirm: Hiển thị lời nhắc xác nhận trước khi chạy cmdlet.
- -Credential: Chỉ định tài khoản người dùng có quyền thực hiện hành động này.
- -DeleteKey: (Chỉ dành cho Certificate Provider) Xóa khóa riêng tư khi chứng chỉ bị xóa.
- -Exclude: Chỉ định một mảng chuỗi các mục mà cmdlet này loại trừ trong thao tác.
- -Filter: Chỉ định một bộ lọc để đủ điều kiện tham số Path.
- -Force: Buộc cmdlet xóa các mục không thể thay đổi được, chẳng hạn như tệp ẩn hoặc chỉ đọc.
- -Include: Chỉ định một mảng chuỗi các mục mà cmdlet này bao gồm trong thao tác.
- -LiteralPath: Chỉ định một đường dẫn đến một hoặc nhiều vị trí. Sử dụng chính xác như được nhập, không có ký tự nào được hiểu là ký tự đại diện.
- -Path: Chỉ định đường dẫn của các mục sẽ bị xóa. Cho phép sử dụng ký tự đại diện.
- -Recurse: Chỉ định rằng cmdlet này xóa các mục ở các vị trí được chỉ định và trong tất cả các mục con của các vị trí.
- -Stream: (Chỉ dành cho FileSystem Provider) Chỉ định một luồng dữ liệu thay thế.
- -WhatIf: Hiển thị những gì sẽ xảy ra nếu cmdlet chạy. Cmdlet không được chạy.
Đầu Vào và Đầu Ra
- Đầu vào:
String
(Bạn có thể chuyển một chuỗi chứa đường dẫn, nhưng không phải đường dẫn ký tự, đến cmdlet này.) - Đầu ra:
None
(Cmdlet này không trả về đầu ra.)
Lưu Ý
- PowerShell bao gồm các alias sau cho
Remove-Item
:del
erase
rd
ri
rm
(chỉ trên Windows)rmdir
(chỉ trên Windows)
- Cmdlet
Remove-Item
được thiết kế để hoạt động với dữ liệu được cung cấp bởi bất kỳ provider nào. - Khi bạn cố gắng xóa một thư mục chứa các mục mà không sử dụng tham số Recurse, cmdlet sẽ nhắc bạn xác nhận. Sử dụng
-Confirm:$false
không chặn lời nhắc. Điều này là do thiết kế.
Các Liên Kết Liên Quan
- about_Providers
- about_Wildcards
- Get-ChildItem
- Invoke-Command
- about_Certificate_Provider
- about_FileSystem_Provider
- about_Quoting_Rules
- Unblock-File