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.