powershell làm thế nào để loại bỏ symlink bị hỏng


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ỗi liên quan đến thực tế là rm -force cố gắng loại bỏ các mục bên trong bất cứ nơi nào liên kết đang trỏ. Làm thế nào tôi có thể loại bỏ điều này bằng cách sử dụng dòng lệnh? Tôi có thể báo cáo lỗi powershell / shell ở đâu? Có vẻ như powershell không có trên ms kết nối.

Câu trả lời:


8

Thử:

cmd /c rmdir testlink

cmd không biết về rm


Hoạt động, bây giờ nơi nào có thể cho MS biết về lỗi này?
Ian Kelling

PS chưa có mklinkvì vậy nó có ý nghĩa rằng nó không biết làm thế nào để đối phó với những người bị hỏng. Tôi gọi nó là "yêu cầu tính năng" chứ không phải là "lỗi". Tôi sẽ tưởng tượng nó đã có trong lộ trình. Tuy nhiên, đây là một liên kết để phản hồi: connect.microsoft.com/PowerShell
Tạm dừng cho đến khi có thông báo mới.

cảm ơn. Không biết làm thế nào tôi bỏ lỡ liên kết kết nối ms trước đây.
Ian Kelling

1

Sử dụng lệnh mountvol / d

Liệt kê HƯỚNG DẪN:

PS C:> Mountvol

sau đó

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

thay thế GUID có liên quan ở trên


Không có dấu hiệu nào cho thấy âm lượng tương ứng với symlink bị hỏng mà tôi muốn xóa.
Ian Kelling

Tôi chưa thử, nhưng tôi không nghĩ là có vấn đề, chỉ cần chạy 'mountvol' trên máy chủ và nó sẽ liệt kê tất cả các điểm gắn kết trên tất cả các ổ đĩa (cùng với GUID của họ)
SS64

1

Tôi sử dụng .net từ powershell để làm điều này

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

Trong đó $ Path bằng với đường dẫn của symlink của bạn. rmdir không cung cấp kết quả nhất quán và hầu như sẽ luôn trả về lỗi khi chạy từ powershell, bất kể nó có thành công hay không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.