PowerShell, как удалить сломанную символическую ссылку


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

Ошибка связана с тем, что rm -force пытается удалить элементы внутри, куда указывает ссылка. Как я могу удалить эту вещь с помощью командной строки? Где я могу сообщить об ошибках PowerShell / Shell? Кажется, PowerShell не на MS подключиться.

Ответы:


8

Пытаться:

cmd /c rmdir testlink

cmd не знает о rm


Работает, теперь, где мог сообщить MS об этой ошибке?
Ян Келлинг

PS еще нет, mklinkпоэтому имеет смысл, что он не знает, как бороться с сломанными. Я бы назвал это «запросом функции», а не «ошибкой». Я полагаю, это уже на дорожной карте. Вот ссылка для обратной связи: connect.microsoft.com/PowerShell
приостановлена ​​до дальнейшего уведомления.

Спасибо. Не знаю, как я пропустил ссылку MS Connect раньше.
Ян Келлинг

1

Используйте команду mountvol / d

Перечислите GUID:

PS C:> Маунтвол

тогда

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

замена соответствующего GUID в приведенном выше


Там нет указания, какой объем соответствует сломанной символической ссылке, которую я хочу удалить.
Ян Келлинг

Я еще не пробовал, но я не думаю, что это имеет значение, просто запустите 'mountvol' на сервере, и он должен перечислить все точки монтирования на всех томах (вместе с их GUID)
SS64

1

Я использую .net от powershell, чтобы сделать это

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

Где $ Path равен пути вашей символической ссылки. rmdir не дает согласованного результата и почти всегда возвращает ошибку при запуске из powershell, независимо от того, был он успешным или нет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.