如何在PowerShell中将包括符号链接的文件夹结构扩展为实际文件和文件夹(无链接)?

时间:2020-10-16 22:24:57

标签: powershell symlink

我觉得必须有一种优雅的方法,所以在我一起破解一个复杂的实现之前,我要问所有聪明的人。 :)预先感谢您的任何想法!

我正在使用PowerShell。在我的本地计算机上,有一个包含一些符号链接的文件夹结构。我想将这些符号链接替换为它们所指向的真实内容,以便我拥有所有文件夹结构和文件,而没有任何链接。如果我可以就地执行此操作(不创建新的无链接副本),将获得加分。

我知道我只需在Windows资源管理器中复制/粘贴文件夹就可以完成几乎所有我想做的事情。我想在PowerShell中以编程方式完成此操作,最好不要创建一个新文件夹,然后在删除原始文件夹之前必须与原始文件夹交换。

有什么提示吗? :)

1 个答案:

答案 0 :(得分:0)

我有解决办法!

您可以使用以下代码:

$File_LST = Get-ChildItem -Path C:\example
foreach ($File in $File_LST) {
    if($File.Attributes -like "*ReparsePoint*"){
         $FIL_PAT =  $file.Target
         $FIL_DST = $File.Directory.FullName
         Remove-item $File.FullName -Force
         Copy-Item -Path $FIL_PAT -Destination $FIL_DST -Force
    }
}

我已经在计算机上进行了测试,并且可以正常工作。当文件是符号链接时,目标的属性为其“ ReparsePoint ”,并且您需要将信息保存在变量中,因为在删除链接时,PowerShell会丢失信息。