powershell 깨진 symlink를 제거하는 방법


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

이 오류는 rm -force가 링크가 가리키는 곳의 항목을 제거하려고한다는 사실과 관련이 있습니다. 커맨드 라인을 사용하여 어떻게 이것을 제거 할 수 있습니까? powershell / shell 버그는 어디에보고 할 수 있습니까? powershell이 ​​ms connect에없는 것 같습니다.

답변:


8

시험:

cmd /c rmdir testlink

cmd 몰라 rm


MS가이 버그에 대해 어디에서 알 수 있습니까?
Ian Kelling

PS는 mklink아직 깨지지 않았으므로 깨진 것을 처리하는 방법을 모른다는 것이 합리적입니다. "버그"가 아니라 "기능 요청"이라고 부릅니다. 나는 그것이 이미 로드맵에 있다고 상상할 것입니다. 다음은 피드백을위한 링크입니다. connect.microsoft.com/PowerShell
추후 공지가있을 때까지 일시 중지되었습니다.

감사. 전에 ms 연결 링크를 놓친 방법을 모르겠습니다.
Ian Kelling

1

mountvol / d 명령을 사용하십시오.

GUID를 나열하십시오.

PS C :> 마운트 볼

그때

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

위의 관련 GUID 교체


어떤 볼륨이 삭제하려는 심볼릭 링크에 해당하는지에 대한 표시가 없습니다.
Ian Kelling

아직 시도하지는 않았지만 서버에서 'mountvol'을 실행하면 GUID와 함께 모든 볼륨의 모든 마운트 지점을 나열해야합니다.
SS64

1

powershell의 .net을 사용 하여이 작업을 수행합니다.

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

여기서 $ Path는 심볼릭 링크의 경로와 같습니다. rmdir은 일관된 결과를 제공하지 않으며 powershell에서 실행될 때 성공 여부와 상관없이 거의 항상 오류를 반환합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.