在Powershell中删除子目录,包括符号链接

时间:2018-07-03 18:24:06

标签: windows powershell scripting

当前遇到问题,我目前正在这样做:

Get-ChildItem $PATH -Recurse -ErrorAction SilentlyContinue | 
  Where-Object {($_.Attributes -notmatch '\"Directory\"') -and  
              ($_.LastWriteTime -lt (Get-Date).AddHours(-12))}| 
    Remove-Item -Force -Recurse

现在,如果我没有符号链接,那么它将删除很好,但是我知道。我收到此错误:

  

Remove-Item:请求中指定的标记与重新解析点中存在的标记不匹配   在线:1个字符:184   + ...($ _。LastWriteTime -lt(Get-Date).AddHours(-12))} |删除项-强制   + ~~~~~~~~~~~~~~~~~~       + CategoryInfo:未指定:(:) [Remove-Item],Win32Exception       + FullyQualifiedErrorId:System.ComponentModel.Win32Exception,Microsoft.PowerShell.Commands.RemoveItemCommand

我无法将Powershell升级到v6。它似乎与以下内容有关:https://github.com/powershell/powershell/issues/621#issuecomment-289230180

有人解决吗?

2 个答案:

答案 0 :(得分:0)

此问题似乎已在PS 6中得到解决(参考:https://github.com/powershell/powershell/issues/621

在PS 5.1中,可以使用以下方法解决该问题:

$(get-item $theSymlinkDir).Delete()

或在Q的注释中针对此特定的Foreach-Object循环注意到LotPings:

|? LinkType -eq 'SymbolicLink'| % { $_.Delete() }

答案 1 :(得分:0)

今天在PowerShell 7上进行了测试,很遗憾,问题仍然存在:PowerShell无法删除符号链接。

我不得不通过提升提示符键入cmd /c rmdir /s /q C:\Users\Your_User_Name\Your_Folder_Name来删除目录