Si tiene Powershell 5+ lo siguiente de una sola línea de forma recursiva enumera todos los enlaces duros de archivos, uniones de directorio y enlaces simbólicos y sus objetivos a partir de d:\Temp\
:
dir 'd:\Temp' -recurse -force | ?{$_.LinkType} | select FullName,LinkType,Target
Salida:
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}
Si le interesan los objetivos múltiples para enlaces duros, use esta variación que enumera los destinos separados por tabulaciones:
dir 'd:\Temp' -recurse -force | ?{$_.LinkType} | select FullName,LinkType,@{ Name = "Targets"; Expression={$_.Target -join "`t"} }
Es posible que necesite privilegios de administrador para ejecutar este script en, por ejemplo, C:\
.
Los enlaces duros son simplemente entradas de archivos adicionales en el MFT y, como tales, aparecen como archivos normales, a menos que alguien mire la cantidad de enlaces a ese archivo. Pero no probé un enlace simbólico hasta el momento. De hecho, tiene el conjunto de atributos ReparsePoint. Gracias.(Aunque los enlaces simbólicos son más difíciles de manejar, ya que no tengo permisos para crearlos de manera predeterminada: /) – Joey
Creo que no es cierto que los enlaces permanentes y los enlaces simbólicos usen el mismo mecanismo. Como señaló Johannes, los enlaces duros son solo otra entrada en el MFT. Un enlace simbólico es un punto de análisis. Ellos son diferentes. http://stackoverflow.com/questions/817794/find-out-whether-a-file-is-a-symlink-in-powershell/2255548#2255548 – Cheeso
¿Es posible comprobar también si el enlace simbólico sigue siendo válido? (O en otras palabras, si el directorio de destino no se ha eliminado) –