¿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 -Typey presione tabulador para recorrer las opcionesHardlink,SymbolicLinkyJunctionaparece 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 HardLinkniNew-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
mklinkproporcionado porcmd, desde PowerShell para hacer enlaces simbólicos:Debe pasar
/damklinksi el destino es un directorio.Para enlaces duros, sugiero algo como Sysinternals Junction .
fuente
function mklink { cmd /c mklink $args }New-Itemdetecta si el objetivo es un directorio , peroNew-Itemfallará 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
.lnkacceso 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-Itemcomando.Agregar módulo "pscx"
No, no está integrado en PowerShell. Y la
mklinkutilidad no se puede invocar sola en Windows Vista / Windows 7 porque está integrada directamentecmd.execomo 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-ReparsePointfuente
New-Item -Typey presione tabulador para recorrer las opciones.Hardlink,SymbolicLinkyJunctionaparece 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 hardlinkrequierenew-fileyexisting-fileestar en el mismo disco. Si eso te importa, usa cmd'smklink /cen su lugar.fsutil(o Windows para el caso)Nuevo enlace simbólico:
Eliminar enlace simbólico:
Uso:
fuente
New-Item -Typey presione tabulador para recorrer las opciones.Hardlink,SymbolicLinkyJunctionaparece 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
mklinkque 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
junctionsolo funciona con directorios (no me pregunte por qué), por lo que no puede vincular archivos. Optaríacmd /c mklinkpor enlaces blandos (no puedo entender por qué no es compatible directamente con PowerShell) ofsutilpor 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