¿Puede PowerShell 1.0 crear enlaces duros y blandos análogos a la variedad Unix?
Si esto no está integrado, ¿alguien puede señalarme un sitio que tenga un script ps1 que imite esto?
Esta es una función necesaria de cualquier buen shell, en mi humilde opinión. :)
powershell
symlink
Mike T
fuente
fuente
New-Item -Type
y presione tabulador para recorrer las opcionesHardlink
,SymbolicLink
yJunction
aparece para mí. Sistema operativo Works Win 10, Server 2016+ o anterior con Powershell 5.0+ instalado a través de Windows Management Framework 5.0+.New-Item -Type HardLink
niNew-Item -Type SymbolicLink
. Los documentos de elementos nuevos se vinculanhelp about_Providers
, sugiere que lea la ayuda para cada proveedor (que no está vinculado). Pero si lo buscas en Google, hay muchos rumores en la comunidad de PowerShellNew-Item -Type HardLink
. Parece que el equipo de ingeniería de PowerShell ha creado puntos de extensión de proveedores que confunden al equipo de documentación.Respuestas:
Puede llamar al
mklink
proporcionado porcmd
, desde PowerShell para hacer enlaces simbólicos:Debe pasar
/d
amklink
si el destino es un directorio.Para enlaces duros, sugiero algo como Sysinternals Junction .
fuente
function mklink { cmd /c mklink $args }
New-Item
detecta si el objetivo es un directorio , peroNew-Item
fallará si el objetivo no existe, mientras que mklink creará el enlace simbólico independientemente .Windows 10 (y Powershell 5.0 en general) le permite crear enlaces simbólicos a través del cmdlet New-Item .
Uso:
O en tu perfil:
Active el modo de desarrollador para no requerir privilegios de administrador al hacer enlaces con
New-Item
:fuente
.lnk
acceso directo de Explorer . En el explorador, un acceso directo y un enlace simbólico del mismo nombre se muestran uno al lado del otro como si nada estuviera mal. Sus comportamientos son sutilmente diferentes; siguiendo el enlace simbólico se muestra la ruta absoluta en la barra del Explorador. Seguir el acceso directo lo trata como si el directorio padre del enlace simbólico fuera el padre verdadero.New-Item
comando.Agregar módulo "pscx"
No, no está integrado en PowerShell. Y la
mklink
utilidad no se puede invocar sola en Windows Vista / Windows 7 porque está integrada directamentecmd.exe
como un "comando interno" .Puede usar las Extensiones de comunidad de PowerShell (gratis). Existen varios cmdlets para puntos de análisis de varios tipos:
New-HardLink
,New-SymLink
,New-Junction
,Remove-ReparsePoint
fuente
New-Item -Type
y presione tabulador para recorrer las opciones.Hardlink
,SymbolicLink
yJunction
aparece para mí. Funciona con Win 10, Server 2016+ o un sistema operativo anterior con Powershell 5.0 instalado a través de Windows Management Framework 5.0+.En Windows 7, el comando es
PowerShell lo encuentra sin la ruta completa (c: \ Windows \ system32) o la extensión (.exe).
fuente
fsutil hardlink
requierenew-file
yexisting-file
estar en el mismo disco. Si eso te importa, usa cmd'smklink /c
en su lugar.fsutil
(o Windows para el caso)Nuevo enlace simbólico:
Eliminar enlace simbólico:
Uso:
fuente
New-Item -Type
y presione tabulador para recorrer las opciones.Hardlink
,SymbolicLink
yJunction
aparece para mí. Funciona con Win 10, Server 2016+ o un sistema operativo anterior con Powershell 5.0 instalado a través de Windows Management Framework 5.0+.Prueba junction.exe
La utilidad de línea de comando Junction de SysInternals facilita la creación y eliminación de uniones.
Otras lecturas
Microsoft usa "soft link" como otro nombre para "junction" .
Sin embargo: un "enlace simbólico" es algo completamente distinto.
Consulte MSDN: enlaces duros y uniones en Windows.
(Esto está en contradicción directa con el uso general de los términos donde "enlace suave" y "enlace simbólico" ( "enlace simbólico" ) SIGNIFICA lo mismo ).
fuente
mklink
que se envía con Windows. Si tiene una versión de Windows con la que se envía.Puedes usar esta utilidad:
fuente
Escribí un módulo de PowerShell que tiene envoltorios nativos para MKLINK. https://gist.github.com/2891103
Incluye funciones para:
Captura la salida de MKLINK y arroja los errores de PowerShell adecuados cuando es necesario.
fuente
Combiné dos respuestas (@bviktor y @jocassid). Fue probado en Windows 10 y Windows Server 2012.
fuente
En realidad, el comando Sysinternals
junction
solo funciona con directorios (no me pregunte por qué), por lo que no puede vincular archivos. Optaríacmd /c mklink
por enlaces blandos (no puedo entender por qué no es compatible directamente con PowerShell) ofsutil
por enlaces duros.Si necesita que funcione en Windows XP, no conozco nada más que Sysinternals
junction
, por lo que puede estar limitado a directorios.fuente
Encontré esto de la manera simple sin ayuda externa. Sí, utiliza un comando arcaico de DOS, pero funciona, es fácil y está claro.
Utiliza el comando dir DOS para encontrar todas las entradas con el atributo de enlace simbólico, filtra el nombre del enlace específico seguido de los corchetes "[]" de destino y para cada uno, presumiblemente uno, extrae solo la cadena de destino.
fuente