PowerShell comment supprimer un lien symbolique cassé


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:\>

L'erreur est liée au fait que rm -force essaie de supprimer des éléments à l'intérieur du pointage du lien. Comment puis-je supprimer cette chose en utilisant la ligne de commande? Où puis-je signaler des bugs PowerShell / Shell? Il semble que PowerShell ne soit pas sur MS Connect.

Réponses:


8

Essayer:

cmd /c rmdir testlink

cmd ne sait pas rm


Fonctionne, maintenant où pourrait informer MS de ce bogue?
Ian Kelling

PS n'a pas mklinkencore, donc il est logique qu'il ne sache pas comment gérer les cassés. Je l'appellerais une "demande de fonctionnalité" plutôt qu'un "bug". J'imagine que c'est déjà sur la feuille de route. Voici un lien pour les commentaires, cependant: connect.microsoft.com/PowerShell
pause jusqu'à nouvel ordre.

Merci. Je ne sais pas comment j'ai manqué le lien ms connect avant.
Ian Kelling

1

Utilisez la commande mountvol / d

Listez le GUID:

PS C:> Mountvol

puis

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

remplacement du GUID correspondant dans ce qui précède


Il n'y a aucune indication sur le volume correspondant au lien symbolique cassé que je souhaite supprimer.
Ian Kelling

Je ne l'ai pas encore essayé, mais je ne pense pas que ce soit important, exécutez simplement 'mountvol' sur le serveur et il devrait répertorier tous les points de montage sur tous les volumes (avec leurs GUID)
SS64

1

J'utilise .net de powershell pour ce faire

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

Où $ Path est égal au chemin de votre lien symbolique. rmdir ne fournit pas de résultat cohérent et renvoie presque toujours une erreur lors de l'exécution à partir de powershell, qu'elle ait réussi ou non.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.