2

似乎Remove-Item -Recurse -Force无法处理删除符号链接。如何递归地从给定目录中删除所有带有符号链接的所有内容?

MWE:

PS C:\Users\Administrator\Desktop\test> mkdir foo
    Directory: C:\Users\Administrator\Desktop\test
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        7/30/2020  11:58 AM                foo

PS C:\Users\Administrator\Desktop\test> mkdir bar
    Directory: C:\Users\Administrator\Desktop\test
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        7/30/2020  11:58 AM                bar

PS C:\Users\Administrator\Desktop\test> New-Item -ItemType SymbolicLink -Path foo -Name bar -Value C:\Users\Administrator\Desktop\test\bar
    Directory: C:\Users\Administrator\Desktop\test\foo
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d----l        7/30/2020  11:59 AM                bar

PS C:\Users\Administrator\Desktop\test> Remove-Item -Recurse -Force foo
Remove-Item : There is a mismatch between the tag specified in the request and the tag present in the reparse point
At line:1 char:1
+ Remove-Item -Recurse -Force foo
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Remove-Item], Win32Exception
    + FullyQualifiedErrorId : System.ComponentModel.Win32Exception,Microsoft.PowerShell.Commands.RemoveItemCommand
4

3 回答 3

2

看起来您遇到了与此处提到的相同的问题:

https://github.com/powershell/powershell/issues/621

该线程中提到的解决方法是:

Get-ChildItem $somepath -Attributes ReparsePoint | % { $_.Delete() }

或者您可以在此处收集更多信息:

https://github.com/PowerShell/PowerShell/pull/11331

于 2020-07-30T11:45:33.987 回答
2

实际的 CMD 等效于Remove-Item -Recurse -Force

cmd /c rmdir /s /q foo

因为它也会删除子目录中的符号链接。这对我来说似乎已经足够好了。

于 2020-07-30T13:32:46.597 回答
1

总是有cmd。由于链接,这些天 Wmi 和 powershell 甚至无法删除配置文件。

cmd /c del bar
于 2020-07-30T12:54:29.283 回答