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.

Jawaban:


8

Mencoba:

cmd /c rmdir testlink

cmd tidak tahu tentang rm


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


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.