Nếu bạn có Powershell 5 + sau một lót đệ quy liệt kê tất cả hardlinks tập tin, thư mục và các nút liên kết tượng trưng và mục tiêu của họ bắt đầu từ d:\Temp\
:
dir 'd:\Temp' -recurse -force | ?{$_.LinkType} | select FullName,LinkType,Target
Output:
FullName LinkType Target
-------- -------- ------
D:\Temp\MyJunctionDir Junction {D:\exp\junction_target_dir}
D:\Temp\MySymLinkDir SymbolicLink {D:\exp\symlink_target_dir}
D:\Temp\MyHardLinkFile.txt HardLink {D:\temp\MyHardLinkFile2.txt, D:\exp\hlink_target.xml}
D:\Temp\MyHardLinkFile2.txt HardLink {D:\temp\MyHardLinkFile.txt, D:\exp\hlink_target.xml}
D:\Temp\MySymLinkFile.txt SymbolicLink {D:\exp\symlink_target.xml}
D:\Temp\MySymLinkDir\MySymLinkFile2.txt SymbolicLink {D:\temp\normal file.txt}
Nếu bạn quan tâm đến nhiều mục tiêu cho liên kết cứng, hãy sử dụng biến thể này liệt kê các mục tiêu được phân tách bằng tab:
dir 'd:\Temp' -recurse -force | ?{$_.LinkType} | select FullName,LinkType,@{ Name = "Targets"; Expression={$_.Target -join "`t"} }
Bạn có thể cần đặc quyền của quản trị viên để chạy tập lệnh này theo số C:\
.
Nguồn
2017-02-08 15:39:04
Liên kết cứng chỉ đơn giản là các mục nhập tệp bổ sung trong MFT và như vậy xuất hiện dưới dạng tệp bình thường, trừ khi ai đó xem xét số lượng liên kết đến tệp đó. Nhưng tôi đã không thử một liên kết tượng trưng cho đến nay. Thật vậy nó có tập thuộc tính ReparsePoint. Cảm ơn.(Mặc dù symlink có nhiều cồng kềnh hơn để xử lý, vì tôi không có quyền tạo chúng theo mặc định: /) – Joey
Tôi nghĩ rằng các liên kết cứng và symlink không sử dụng cùng một cơ chế. Như Johannes đã chỉ ra, các liên kết cứng chỉ là một mục nhập khác trong MFT. Một liên kết tượng trưng là một điểm Reparse. Chúng khác nhau. http://stackoverflow.com/questions/817794/find-out-whether-a-file-is-a-symlink-in-powershell/2255548#2255548 – Cheeso
Có khả năng nó cũng kiểm tra xem liên kết tượng trưng vẫn hợp lệ không? (Hay nói cách khác, nếu thư mục đích chưa bị xóa) –