powershell como remover link simbólico quebrado


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

O erro está relacionado ao fato de o rm -force tentar remover itens dentro de onde quer que o link esteja apontando. Como posso remover essa coisa usando a linha de comando? Onde posso relatar bugs do PowerShell / Shell? Parece que o PowerShell não está no ms connect.

Respostas:


8

Tentar:

cmd /c rmdir testlink

cmd não sabe sobre rm


Funciona, agora onde poderia informar a Microsoft sobre esse bug?
23610 Ian Kelling

O PS ainda não possui, mklinkportanto, faz sentido que ele não saiba lidar com os quebrados. Eu chamaria isso de "solicitação de recurso" em vez de "bug". Eu imagino que já está no roteiro. Aqui está um link para feedback: connect.microsoft.com/PowerShell
Pausado até novo aviso.

obrigado. Não sei como eu perdi o link ms connect antes.
23909 Ian Kelling

1

Use o comando mountvol / d

Liste o GUID:

PS C:> Mountvol

então

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

substituindo o GUID relevante no acima


Não há indicação de qual volume corresponde ao link simbólico quebrado que desejo excluir.
23610 Ian Kelling

Eu ainda não tentei ainda, mas eu não acho que importa, basta executar 'mountvol' no servidor e deve listar todos os pontos de montagem de todos os volumes (juntamente com seus GUIDs)
SS64

1

Eu uso .net do powershell para fazer isso

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

Onde $ Path é igual ao caminho do seu link simbólico. O rmdir não fornece resultados consistentes e quase sempre retorna um erro quando executado a partir do PowerShell, independentemente de ter sido bem-sucedido ou não.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.