PowerShell cara menghapus symlink yang rusak

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

Kesalahan terkait dengan fakta bahwa rm-force mencoba menghapus item di dalam mana pun tautan menunjuk. Bagaimana saya bisa menghapus hal ini menggunakan baris perintah? Di mana saya dapat melaporkan bug powershell / shell? Sepertinya PowerShell tidak ada di MS Connect.

Ian Kelling
sumber

Jawaban:

8

Mencoba:

cmd /c rmdir testlink

cmd tidak tahu tentang rm

Dijeda sampai pemberitahuan lebih lanjut.
sumber
Bekerja, sekarang di mana MS bisa memberi tahu tentang bug ini?
Ian Kelling
PS mklinkbelum jadi masuk akal kalau tidak tahu bagaimana menangani yang rusak. Saya akan menyebutnya "permintaan fitur" daripada "bug". Saya akan membayangkan itu sudah ada di peta jalan. Berikut ini tautan untuk umpan balik: connect.microsoft.com/PowerShell
Dijeda hingga pemberitahuan lebih lanjut.
Terima kasih. Tidak tahu bagaimana saya melewatkan tautan ms connect sebelumnya.
Ian Kelling
1

Gunakan perintah mountvol / d

Daftarkan GUID:

PS C:> Pasangvol

kemudian

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

mengganti GUID yang relevan di atas

SS64
sumber
Tidak ada indikasi volume yang sesuai dengan symlink rusak yang ingin saya hapus.
Ian Kelling
Saya belum mencobanya, tapi saya tidak berpikir itu penting, jalankan 'mountvol' di server dan itu akan mencantumkan semua titik mount pada semua volume (bersama dengan GUID mereka)
SS64
1

Saya menggunakan .net dari PowerShell untuk melakukan ini

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

Di mana $ Path sama dengan jalur symlink Anda. rmdir tidak memberikan hasil yang konsisten dan hampir selalu akan mengembalikan kesalahan saat dijalankan dari PowerShell, terlepas dari apakah itu berhasil atau tidak.

pizzim13
sumber