powershell cómo eliminar el enlace simbólico roto


9
PS C:\> cmd /c mklink /d testlink non-existent-dir
symbolic link created for testlink <<===>> non-existent-dir
PS C:\> rm .\testlink
Remove-Item : C:\testlink is a NTFS junction point. Use the Force parameter to delete or modify.
At line:1 char:3
+ rm <<<<  .\testlink
    + CategoryInfo          : WriteError: (C:\testlink:DirectoryInfo) [Remove-Item], IOException
    + FullyQualifiedErrorId : DirectoryNotEmpty,Microsoft.PowerShell.Commands.RemoveItemCommand

PS C:\> rm -force .\testlink
Remove-Item : Could not find a part of the path 'C:\testlink'.
At line:1 char:3
+ rm <<<<  -force .\testlink
    + CategoryInfo          : WriteError: (C:\testlink:String) [Remove-Item], DirectoryNotFoundException
    + FullyQualifiedErrorId : RemoveItemIOError,Microsoft.PowerShell.Commands.RemoveItemCommand

PS C:\>

El error está relacionado con el hecho de que rm -force intenta eliminar elementos dentro de donde sea que apunte el enlace. ¿Cómo puedo eliminar esto usando la línea de comando? ¿Dónde puedo reportar los errores de powershell / shell? Parece que powershell no está en ms connect.

Respuestas:


8

Tratar:

cmd /c rmdir testlink

cmd no sabe sobre rm


Funciona, ahora, ¿dónde podría informar MS sobre este error?
Ian Kelling

PS aún no tiene, mklinkpor lo que tiene sentido que no sepa cómo lidiar con los que no funcionan. Yo lo llamaría una "solicitud de función" en lugar de un "error". Me imagino que ya está en la hoja de ruta. Sin embargo, aquí hay un enlace para comentarios: connect.microsoft.com/PowerShell
pausa hasta nuevo aviso.

Gracias. No sé cómo me perdí el enlace ms connect antes.
Ian Kelling

1

Use el comando mountvol / d

Listar el GUID:

PS C:> Mountvol

entonces

PS C:> mountvol \? \ Volume {2eca078d-5cbc-43d3-aff8-7e8511f60d0e} \ / d

reemplazando el GUID relevante en lo anterior


No hay indicación de qué volumen corresponde al enlace simbólico roto que quiero eliminar.
Ian Kelling

Todavía no lo he probado, pero no creo que eso importe, simplemente ejecute 'mountvol' en el servidor y debería enumerar todos los puntos de montaje en todos los volúmenes (junto con sus GUID)
SS64

1

Yo uso .net de powershell para hacer esto

[System.IO.Directory]::Delete($Path,$true)

Donde $ Path es igual a la ruta de su enlace simbólico. rmdir no proporciona resultados consistentes y casi siempre devolverá un error cuando se ejecute desde powershell, independientemente de si fue exitoso o no.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.