Kann PowerShell 1.0 analog zur Unix-Variante Hard- und Softlinks erstellen?
Wenn dies nicht eingebaut ist, kann mich jemand auf eine Site verweisen, die ein ps1-Skript hat, das dies nachahmt?
Dies ist eine notwendige Funktion jeder guten Shell, IMHO. :) :)
powershell
symlink
Mike T.
quelle
quelle
New-Item -Type
und drücken Sie die Tabulatortaste, um durch die Optionen zu blättern.Hardlink
,SymbolicLink
UndJunction
für mich erscheinen. Funktioniert mit Win 10, Server 2016+ oder einem älteren Betriebssystem mit Powershell 5.0+, das über Windows Management Framework 5.0+ installiert wurde.New-Item -Type HardLink
noch findenNew-Item -Type SymbolicLink
. Der Link zu New-Item-Dokumentenhelp about_Providers
weist darauf hin, dass Sie die Hilfe für jeden Anbieter lesen (der nicht verlinkt ist). Aber wenn Sie es googeln, gibt es in der PowerShell-Community viel AufsehenNew-Item -Type HardLink
. Es sieht so aus, als hätte das PowerShell-Entwicklungsteam Anbietererweiterungspunkte entwickelt , die das Dokumententeam überraschen.Antworten:
Sie können das
mklink
voncmd
, von PowerShell bereitgestellte aufrufen , um symbolische Links herzustellen:Sie müssen übergeben
/d
,mklink
wenn das Ziel ein Verzeichnis ist.Für harte Links schlage ich so etwas wie Sysinternals Junction vor .
quelle
function mklink { cmd /c mklink $args }
New-Item
erkennt zwar, ob das Ziel ein Verzeichnis ist ,New-Item
schlägt jedoch fehl, wenn das Ziel nicht vorhanden ist, während mklink den symbolischen Link unabhängig davon erstellt .Mit Windows 10 (und Powershell 5.0 im Allgemeinen) können Sie symbolische Links über das Cmdlet "Neues Element" erstellen .
Verwendung:
Oder in deinem Profil:
Aktivieren Sie den Entwicklermodus, um keine Administratorrechte zu benötigen, wenn Sie Links erstellen mit
New-Item
:quelle
.lnk
Verknüpfung. Im Explorer werden eine Verknüpfung und ein gleichnamiger Symlink nebeneinander angezeigt, als wäre nichts verkehrt. Ihr Verhalten ist subtil unterschiedlich; Wenn Sie dem Symlink folgen, wird der absolute Pfad in der Explorer-Leiste angezeigt. Wenn Sie der Verknüpfung folgen, wird sie so behandelt, als ob das übergeordnete Symlink-Verzeichnis das wahre übergeordnete Verzeichnis ist.New-Item
Commandlet nicht der Fall war .Fügen Sie das Modul "pscx" hinzu
Nein, es ist nicht in PowerShell integriert. Und das
mklink
Dienstprogramm kann unter Windows Vista / Windows 7 nicht alleine aufgerufen werden, da es direktcmd.exe
als "interner Befehl" integriert ist .Sie können die PowerShell-Community-Erweiterungen (kostenlos) verwenden. Es gibt mehrere Cmdlets für Analysepunkte verschiedener Typen:
New-HardLink
,New-SymLink
,New-Junction
,Remove-ReparsePoint
quelle
New-Item -Type
und drücken Sie die Tabulatortaste, um durch die Optionen zu blättern.Hardlink
,SymbolicLink
UndJunction
für mich erscheinen. Funktioniert unter Win 10, Server 2016+ oder einem älteren Betriebssystem mit Powershell 5.0, das über Windows Management Framework 5.0+ installiert wurde.In Windows 7 lautet der Befehl
PowerShell findet es ohne den vollständigen Pfad (c: \ Windows \ system32) oder die Erweiterung (.exe).
quelle
fsutil hardlink
erfordertnew-file
undexisting-file
auf dem gleichen Laufwerk sein. Wenn Ihnen das wichtig ist, verwenden Siemklink /c
stattdessen cmds .fsutil
(oder Windows)Neuer Symlink:
Remove-Symlink:
Verwendung:
quelle
New-Item -Type
und drücken Sie die Tabulatortaste, um durch die Optionen zu blättern.Hardlink
,SymbolicLink
UndJunction
für mich erscheinen. Funktioniert unter Win 10, Server 2016+ oder einem älteren Betriebssystem mit Powershell 5.0, das über Windows Management Framework 5.0+ installiert wurde.Versuchen Sie junction.exe
Das Junction- Befehlszeilenprogramm von SysInternals erleichtert das Erstellen und Löschen von Junctions.
Weiterführende Literatur
Microsoft verwendet "soft link" als anderen Namen für "junction" .
Allerdings: Eine "symbolische Verbindung" ist etwas ganz anderes.
Siehe MSDN: Hard Links und Junctions in Windows.
(Dies steht in direktem Widerspruch zur allgemeinen Verwendung der Begriffe, bei denen "Softlink" und "Symbolischer Link" ( "Symlink" ) dasselbe bedeuten .)
quelle
mklink
was mit Windows geliefert wird. Wenn Sie eine Windows-Version haben, mit der es geliefert wird.Sie können dieses Dienstprogramm verwenden:
quelle
Ich habe ein PowerShell-Modul geschrieben, das native Wrapper für MKLINK enthält. https://gist.github.com/2891103
Enthält Funktionen für:
Erfasst die MKLINK-Ausgabe und löst bei Bedarf die richtigen PowerShell-Fehler aus.
quelle
Ich habe zwei Antworten kombiniert (@bviktor und @jocassid). Es wurde unter Windows 10 und Windows Server 2012 getestet.
quelle
Tatsächlich funktioniert der Befehl Sysinternals
junction
nur mit Verzeichnissen (fragen Sie mich nicht warum), sodass Dateien nicht fest verknüpft werden können. Ich würde michcmd /c mklink
für Softlinks (ich kann mir nicht vorstellen, warum es nicht direkt von PowerShell unterstützt wird) oderfsutil
für Hardlinks entscheiden.Wenn Sie es für Windows XP benötigen, ist mir nichts anderes als Sysinternals bekannt
junction
, sodass Sie möglicherweise auf Verzeichnisse beschränkt sind.quelle
Ich fand das auf einfache Weise ohne externe Hilfe. Ja, es verwendet einen archaischen DOS-Befehl, aber es funktioniert, es ist einfach und es ist klar.
Dies verwendet den Befehl DOS dir, um alle Einträge mit dem symbolischen Verknüpfungsattribut zu finden, nach dem spezifischen Verknüpfungsnamen zu filtern, gefolgt von Zielklammern "[]", und für jede - vermutlich eine - nur die Zielzeichenfolge zu extrahieren.
quelle