Wprowadzenie
Windows 2000 i nowsze wersje obsługują dowiązania symboliczne katalogu, gdzie katalog służy jako dowiązanie symboliczne do innego katalogu na komputerze. Na przykład, jeśli katalog D: \ SYMLINK określił C: \ WINNT \ SYSTEM32 jako cel, wówczas aplikacja uzyskująca dostęp do D: \ SYMLINK \ DRIVERS w rzeczywistości uzyskiwałaby dostęp do C: \ WINNT \ SYSTEM32 \ DRIVERS. Dowiązania symboliczne katalogu są znane jako połączenia NTFS w systemie Windows. Niestety, system Windows nie zawiera narzędzi do tworzenia skrzyżowań - musisz zakupić zestaw zasobów Win2K, który jest dostarczany wraz z połączonym programem do tworzenia skrzyżowań. Dlatego postanowiłem napisać własne narzędzie do tworzenia połączeń: Junction. Junction nie tylko pozwala tworzyć połączenia NTFS, ale pozwala zobaczyć, czy pliki lub katalogi są w rzeczywistości punktami ponownej analizy. Punkty ponownej analizy są mechanizmem, na którym oparte są połączenia NTFS,
Zapoznaj się z tym artykułem Microsoft KB, aby uzyskać wskazówki dotyczące korzystania z skrzyżowań.
Uwaga: Windows nie obsługuje połączeń do katalogów na zdalnych udziałach.
Jeśli chcesz wyświetlić informacje o ponownej analizie, użycie Junction jest następujące:
Korzystanie z połączenia
Użyj skrzyżowania, aby wyświetlić listę skrzyżowań:
Użycie: [-s]
-s Rekurencyjne podkatalogi
Przykłady:
Aby ustalić, czy plik jest złączem, podaj nazwę pliku:
skrzyżowanie c: \ test
Aby wyświetlić listę skrzyżowań pod katalogiem, włącz przełącznik –s:
skrzyżowanie -sc: \
Aby utworzyć skrzyżowanie c: \ Program-Files dla „c: \ Program Files”:
C:> md Program-Files
C:> skrzyżowanie c: \ Program-Files "c: \ Program Files"
Aby usunąć skrzyżowanie, użyj przełącznika –d:
junction -dc: \ Program-Files
Nie musisz koniecznie pobierać dodatkowych programów, aby wyświetlić listę skrzyżowań, dowiązań symbolicznych i dowiązań twardych, ale jeśli masz określone wymagania dotyczące formatu wyjściowego, mogą one pomóc.
Lista wszystkich skrzyżowań, dowiązań symbolicznych i katalogów dowiązań symbolicznych w bieżącym katalogu i jego podkatalogach:
Lub jeśli chcesz, aby były wymienione osobno ...
Wyświetl wszystkie skrzyżowania w bieżącym katalogu i jego podkatalogach:
Wyświetl wszystkie dowiązania symboliczne w bieżącym katalogu i jego podkatalogach:
Wyświetl wszystkie katalogi dowiązań symbolicznych w bieżącym katalogu i jego podkatalogach:
l
Flag atrybutem jest tutaj kluczem;l
jest dlaReparse Points
(skrzyżowań, dowiązań symbolicznych i katalogów dowiązań symbolicznych)Twarde linki
Niestety
dir
wyświetla twarde linki jako zwykłe pliki, więc nie można go używać do identyfikowania twardych łączy. Zamiast tego możesz użyć wbudowanegofsutil
. Należy go uruchomić z wiersza polecenia z podwyższonym poziomem uprawnień.Za pomocą wyświetl
fsutil
listę wszystkich dowiązań twardych w bieżącym katalogu i jego podkatalogach:Ten jednowarstwowy nie jest idealny i chętnie przyjmę wszelkie ulepszenia.
forfiles
z opcji podkatalogów rekurencyjnych (/s
) wbiło mój procesor i zajęło mu trochę czasu.fsutil
zasadzie kończy się działa dwa razy; po raz pierwszy zidentyfikuj twarde linki, licząc liczbę linii wyjściowych zwracanych przez każde wywołanie, a po raz drugi na właśnie znalezionych twardych linkach, aby uzyskać prawidłowe wyjście.uniq
.Oto plik wsadowy, który służy tylko
for
do identyfikacji twardych łączy. Ponieważforfiles
nie jest zaangażowany, może być nieco szybszy, jednak nadal cierpi z powodu pozostałych zastrzeżeń powyższej jednowarstwowej.Istnieje kilka innych (nieprzetestowanych) opcji:
Użyj (starego) narzędzia Microsoft HL Scan
Użyj alternatywnego polecenia znajdującego się w zestawie narzędzi Microsoft SFUA:
Użyj narzędzia findlinks Sysinternals w podobny sposób, jak
fsutil
wspomniano powyżejUżyj programu ListLinks firmy Uwe Sieber - patrz link do użycia
Użyj NTFSLinksView Nirsoft, jeśli wolisz aplikację GUI
źródło
Począwszy od programu Powershell 5+, następująca linijka rekurencyjnie zawiera listę wszystkich dowiązań do plików, połączeń katalogów i dowiązań symbolicznych oraz ich celów, zaczynając od
d:\Temp\
:Wydajność:
Jeśli zależy Ci na wielu celach twardych linków, skorzystaj z tej odmiany, która zawiera listę celów rozdzielonych tabulatorami:
Możesz potrzebować uprawnień administratora, aby uruchomić ten skrypt na przykład
C:\
.Aby uruchomić te skrypty z tradycyjnego wiersza poleceń (cmd.exe):
Na przykład:
źródło
dir 'd:\Temp' -recurse -force | ?{$_.LinkType -eq "Junction"} | select FullName,LinkType,Target
LinkType
nie wydaje się wiarygodny w przypadku punktów ponownej analizy. Na przykład na moim komputerze z systemem W10 z PS 5.1LinkType
wartość null jest równa „C: \ ProgramData \ Desktop” i „C: \ Users \ All Users”, podczas gdydir /aL
(Wiersz polecenia, a nie PowerShell) wskazuje, że pierwszy to punkt połączenia a drugi symboliczny link.Twarde linki są lepiej opisane jak wyżej, ale w przypadku dowiązań symbolicznych i połączeń następujące działa dobrze:
Nie używam tutaj żadnych nowych poleceń, jednak poprawia się niektóre z wymienionych na liście, pokazując ładną listę każdego znalezionego łącza, w ścieżce, jego typ (SymLink / Junction) oraz ścieżkę łącza i ścieżkę docelową.
Powyżej znajduje się kilka dobrych, ale podają tylko ścieżkę CELU i zazwyczaj chcesz usunąć link, a nie cel lub skorelować wszystkie linki i cele.
Aby uzyskać typ, link i cel, możesz użyć następujących poleceń w CMD:
Przykładowe dane wyjściowe:
źródło
Far Manager 3.0 może zarówno wyszukiwać, jak i wyświetlać dowiązania symboliczne i punkty połączenia w odróżnieniu od plików i katalogów. (Potrafi robić tak wiele innych rzeczy.) Może także wyszukiwać twarde linki.
ALT+ F7=> [x] Użyj filtru => Filtruj er =>Ins
Wybierz odpowiednie atrybuty.
źródło
LinkMagic2.exe (magia listy połączeń) jest również dobry.
c:\user
Podczas pierwszego instalowania systemu Windows 7 2 lata temu omyłkowo usunąłem wszystkie moje łącza Junction, takie jak printivity, nethood i dane aplikacji, ponieważ myślałem, że zostały one błędnie umieszczone przez instalację. Tak naprawdę są kompatybilnością wsteczną i podczas przeszukiwania Internetu widzę, że niektórzy mieli problemy z robieniem pewnych rzeczy bez tych punktów połączenia.źródło