PowerShell, jak usunąć uszkodzony link symboliczny


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

Błąd związany jest z faktem, że rm-force próbuje usunąć elementy w każdym miejscu, w którym wskazuje link. Jak mogę usunąć tę rzecz za pomocą wiersza polecenia? Gdzie mogę zgłaszać błędy PowerShell / Shell? Wygląda na to, że PowerShell nie działa na MS Connect.

Odpowiedzi:


8

Próbować:

cmd /c rmdir testlink

cmd nie wie o tym rm


Działa, gdzie teraz można powiadomić MS o tym błędzie?
Ian Kelling

PS mklinkjeszcze nie ma, więc ma sens, że nie wie, jak radzić sobie z uszkodzonymi. Nazwałbym to „żądaniem funkcji”, a nie „błędem”. Wyobrażam sobie, że jest już w planie. Oto link do opinii: connect.microsoft.com/PowerShell
Wstrzymany do odwołania.

dzięki. Nie wiem, jak wcześniej przegapiłem łącze ms connect.
Ian Kelling,

1

Użyj polecenia mountvol / d

Wymień GUID:

PS C:> Mountvol

następnie

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

zastępując odpowiedni GUID w powyższym


Nie ma wskazania, który wolumin odpowiada zepsutemu dowiązaniu symbolicznemu, które chcę usunąć.
Ian Kelling

Jeszcze tego nie próbowałem, ale nie sądzę, żeby to miało znaczenie, po prostu uruchom „mountvol” na serwerze i powinien wyświetlić listę wszystkich punktów montowania na wszystkich woluminach (wraz z ich identyfikatorami GUID)
SS64

1

W tym celu używam .net z PowerShell

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

Gdzie $ Path jest równe ścieżce twojego dowiązania symbolicznego. rmdir nie zapewnia spójnego wyniku i prawie zawsze zwraca błąd podczas uruchamiania z PowerShell, niezależnie od tego, czy się powiódł, czy nie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.