删除断开的链接



我需要删除文件夹的所有内容,其中可能包括断开的链接。文件夹路径由一个变量提供。问题是PowerShell无法删除断开的链接。

$folderPath = "C:folder"

尝试1:

Remove-Item -Force -Recurse -Path $folderPath

失败并出现错误:

Remove-Item : Could not find a part of the path 'C:folderbrokenLink'.
At line:1 char:1
+ Remove-Item -Force -Recurse -Path $folderPath
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : WriteError: (C:folderbrokenLink:String) [Remove-Item], DirectoryNot 
FoundException
+ FullyQualifiedErrorId : RemoveItemIOError,Microsoft.PowerShell.Commands.RemoveItemCommand

尝试2:

Start-Job { cmd /c rmdir $folderPath }

失败,因为$folderPath按原样而不是其值传递:

Start-Job { cmd /c rmdir $folderPath } | select command
Command                                                                                             
-------                                                                                             
cmd /c rmdir $folderPath                                                                           

除了使用.NET框架之外,还有什么建议吗?

EDIT
通过断开的链接,我指的是一个指向以前安装的分区的文件夹,该分区已不存在。文件夹仍然可用,但当尝试导航到该文件夹时,会发生此错误,因为目标不再存在:
错误:

C:\folder\brookenLink指的是一个不可用的位置。它可能在这台计算机的硬盘驱动器上,也可能在网络上。检查到请确保磁盘已正确插入,或者您已连接到Internet或网络,然后重试。如果仍然找不到,信息可能已移动到不同的位置。

这将起作用:

$folderPath = "C:folderContaingBrokenSymlinks";
$items = ls $folderPath -Recurse -ea 0;
foreach($item in $items){
if($item.Attributes.ToString().contains("ReparsePoint")){
cmd /c rmdir $item.PSPath.replace("Microsoft.PowerShell.CoreFileSystem::","");
}
else{
rm -Force -Recurse $item;
}
}

最新更新