Question Powershell comment supprimer un lien symbolique brisé


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 pointeur. 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.


9
2017-09-22 17:35


origine




Réponses:


Essayer:

cmd /c rmdir testlink

cmd ne sait pas rm


8
2017-09-22 20:00



Ça marche, où peut-on informer MS de ce bogue? - Ian Kelling
PS n'a pas mklink pourtant, il est logique qu’il ne sache pas comment traiter les brisures. J'appellerais cela 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 - Dennis Williamson
Merci. Je ne sais pas comment j'ai raté le lien ms connect auparavant. - Ian Kelling


Utilisez la commande mountvol / d

Lister le GUID:

PS C:> Mountvol

puis

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

remplacer le GUID correspondant à ce qui précède


1
2017-09-22 23:55



Rien n'indique quel volume correspond au lien symbolique brisé que je veux supprimer. - Ian Kelling
Je n'ai pas encore essayé, mais je ne pense pas que cela compte, il suffit d'exécuter 'mountvol' sur le serveur et il devrait répertorier tous les points de montage sur tous les volumes (ainsi que leurs GUID). - ss64


J'utilise .net de powershell pour le faire

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

Où $ Path est égal au chemin de votre lien symbolique. rmdir ne fournit pas un résultat cohérent et renvoie presque toujours une erreur lorsqu'il est exécuté à partir de PowerShell, qu'il ait réussi ou non.


1
2017-12-01 15:45