powershell come rimuovere il link simbolico non funzionante


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'errore è legato al fatto che rm -force tenta di rimuovere gli elementi all'interno del punto in cui punta il collegamento. Come posso rimuovere questa cosa usando la riga di comando? Dove posso segnalare i bug di PowerShell / Shell? Sembra che PowerShell non sia su MS Connect.

Risposte:


8

Provare:

cmd /c rmdir testlink

cmd non lo so rm


Funziona, ora dove potrebbe far sapere a MS di questo bug?
Ian Kelling,

PS non ha mklinkancora quindi ha senso che non sappia come gestire quelli rotti. Lo definirei una "richiesta di funzionalità" piuttosto che un "bug". Immagino che sia già sulla tabella di marcia. Ecco un link per il feedback, tuttavia: connect.microsoft.com/PowerShell
pausa fino a nuovo avviso.

Grazie. Non so come ho perso il collegamento ms connect prima.
Ian Kelling,

1

Utilizzare il comando mountvol / d

Elencare il GUID:

PS C:> Mountvol

poi

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

sostituendo il GUID pertinente in quanto sopra


Non vi è alcuna indicazione di quale volume corrisponda al link simbolico non funzionante che voglio eliminare.
Ian Kelling,

Non l'ho ancora provato, ma non credo che sia importante, basta eseguire 'mountvol' sul server e dovrebbe elencare tutti i punti di montaggio su tutti i volumi (insieme ai loro GUID)
SS64

1

Per farlo, uso .net di PowerShell

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

Dove $ Path è uguale al percorso del tuo collegamento simbolico. rmdir non fornisce risultati coerenti e restituirà quasi sempre un errore quando eseguito da PowerShell, indipendentemente dal fatto che abbia avuto esito positivo o meno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.