Czy PowerShell 1.0 może tworzyć twarde i miękkie linki analogiczne do odmiany Unix?
Jeśli to nie jest wbudowane, czy ktoś może wskazać mi witrynę, która ma naśladujący to skrypt ps1?
Jest to niezbędna funkcja każdej dobrej powłoki, IMHO. :)
powershell
symlink
Mike T.
źródło
źródło
New-Item -Type
i naciśnij klawisz Tab, aby przechodzić między opcjami.Hardlink
,SymbolicLink
iJunction
pojaw się dla mnie. Działa z systemem Windows 10, Server 2016+ lub starszym z Powershell 5.0+ zainstalowanym za pomocą Windows Management Framework 5.0+.New-Item -Type HardLink
nieNew-Item -Type SymbolicLink
. Dokumenty nowego elementu zawierają link dohelp about_Providers
, sugeruje przeczytanie pomocy dla każdego dostawcy (który nie jest powiązany). Ale jeśli google go to, wokół społeczności PowerShell jest dużo szumuNew-Item -Type HardLink
. Wygląda na to, że zespół inżynierów PowerShell wymyślił punkty rozszerzeń dostawcy, które stumpują zespół docs.Odpowiedzi:
Możesz wywołać
mklink
podany przezcmd
, z PowerShell, aby utworzyć dowiązania symboliczne:Musisz przejść
/d
do,mklink
jeśli celem jest katalog.W przypadku twardych linków sugeruję coś w rodzaju Sysinternals Junction .
źródło
function mklink { cmd /c mklink $args }
New-Item
wykrywa, czy cel jest katalogiem , aleNew-Item
zawiedzie, jeśli cel nie istnieje, podczas gdy mklink utworzy łącze symboliczne niezależnie .Windows 10 (i ogólnie Powershell 5.0) umożliwia tworzenie dowiązań symbolicznych za pomocą polecenia cmdlet New-Item .
Stosowanie:
Lub w swoim profilu:
Włącz tryb programisty, aby nie wymagać uprawnień administratora podczas tworzenia łączy z
New-Item
:źródło
.lnk
skrótu Eksploratora . W Eksploratorze skrót i dowiązanie symboliczne o tej samej nazwie są wyświetlane obok siebie, jakby nic nie było nie tak. Ich zachowania są subtelnie różne; podążanie za dowiązaniem symbolicznym pokazuje bezwzględną ścieżkę na pasku Eksploratora. Następujący skrót traktuje go tak, jakby katalog macierzysty dowiązania symbolicznego był prawdziwym rodzicem.New-Item
komendy.Dodaj moduł „pscx”
Nie, nie jest wbudowany w PowerShell. A
mklink
narzędzie nie może być wywoływane samo w systemie Windows Vista / Windows 7, ponieważ jest wbudowane bezpośredniocmd.exe
jako „polecenie wewnętrzne” .Możesz użyć rozszerzeń społeczności PowerShell (bezpłatnie). Istnieje kilka poleceń cmdlet dla punktów ponownej analizy różnych typów:
New-HardLink
,New-SymLink
,New-Junction
,Remove-ReparsePoint
źródło
New-Item -Type
i naciśnij klawisz Tab, aby przechodzić między opcjami.Hardlink
,SymbolicLink
iJunction
pojaw się dla mnie. Działa z systemem Windows 10, Server 2016+ lub starszym z Powershell 5.0 zainstalowanym za pomocą Windows Management Framework 5.0+.W systemie Windows 7 polecenie to
Program PowerShell znajduje go bez pełnej ścieżki (c: \ Windows \ system32) lub rozszerzenia (.exe).
źródło
fsutil hardlink
wymaganew-file
iexisting-file
być na tym samym dysku. Jeśli to dla Ciebie ważne, użyjmklink /c
zamiast tego poleceń cmd .fsutil
(lub Windows w tym przypadku)Nowy symlink:
Usuń symlink:
Stosowanie:
źródło
New-Item -Type
i naciśnij klawisz Tab, aby przechodzić między opcjami.Hardlink
,SymbolicLink
iJunction
pojaw się dla mnie. Działa z systemem Windows 10, Server 2016+ lub starszym z Powershell 5.0 zainstalowanym za pomocą Windows Management Framework 5.0+.Spróbuj junction.exe
Narzędzie wiersza poleceń Junction od SysInternals ułatwia tworzenie i usuwanie skrzyżowań.
Dalsza lektura
Microsoft używa „soft link” jako innej nazwy „skrzyżowania” .
Jednak: „dowiązanie symboliczne” to coś zupełnie innego.
Zobacz MSDN: Twarde łącza i połączenia w systemie Windows.
(Jest to sprzeczne z ogólnym użyciem terminów, w których „miękki link” i „symboliczny link” ( „symboliczny link” ) oznaczają to samo .)
źródło
mklink
który jest dostarczany z systemem Windows. Jeśli masz wersję systemu Windows, z którą jest dostarczana.Możesz użyć tego narzędzia:
źródło
Napisałem moduł PowerShell, który ma natywne opakowania dla MKLINK. https://gist.github.com/2891103
Zawiera funkcje dla:
Przechwytuje dane wyjściowe MKLINK i w razie potrzeby generuje odpowiednie błędy programu PowerShell.
źródło
Połączyłem dwie odpowiedzi (@bviktor i @jocassid). Został przetestowany na Windows 10 i Windows Server 2012.
źródło
W rzeczywistości polecenie Sysinternals
junction
działa tylko z katalogami (nie pytaj mnie dlaczego), więc nie może dowiązać plików. Wybrałbymcmd /c mklink
miękkie linki (nie mogę zrozumieć, dlaczego nie jest obsługiwane bezpośrednio przez PowerShell) lub twarde linkifsutil
.Jeśli potrzebujesz go do pracy w systemie Windows XP, nie znam nic poza Sysinternals
junction
, więc możesz być ograniczony do katalogów.źródło
Znalazłem to w prosty sposób bez pomocy z zewnątrz. Tak, używa archaicznego polecenia DOS, ale działa, jest łatwe i jasne.
Korzysta z polecenia DOS dir, aby znaleźć wszystkie wpisy z atrybutem dowiązania symbolicznego, filtruje konkretną nazwę dowiązania, a następnie nawiasy docelowe „[]” i dla każdego - przypuszczalnie jednego - wyodrębnia tylko ciąg docelowy.
źródło