【发布时间】:2019-09-19 13:43:40
【问题描述】:
我编写了一个简单的 PowerShell 脚本,将目录备份到 C:\,然后在其年龄 = X 天时删除任何备份文件夹。
由于某种原因,当我使用 Remove-Item cmdlet 时,我收到了 Remove-Item: Cannot find path 'C:\Windows\system32\ [Sub-Folder name]' because it does not exist 错误。
下面是sn-p:
$TargetFolder = "C:\Folder\"
$Folders = get-childitem -path $TargetFolder
foreach ($Folder in $Folders)
{
remove-item $Folder -recurse -force
}
在$TargetFolder = "C:\Folder\" 中,有几个子文件夹。
示例:C:\Folder\SubfolderA、C:\Folder\SubfolderB 等。
当我为$Folder 执行Write-Host 时,它会正确列出SubFolderA、SubFolderB 等,所以我不确定为什么会收到Cannot find path 错误。
【问题讨论】:
-
那你为什么要那样做?为什么不只是 Remove-Item -Recurse -Force $targetfolder?
-
我不想删除 $TargetFolder 中的所有内容。我只想删除已达到特定年龄的备份文件夹。这是脚本。 @4c74356b41
code $Now = Get-Date $Days = "5" $TargetFolder = "C:\Folder\" $LastWrite = $Now.AddDays(-$Days) $Folders = get-childitem -path $TargetFolder | Where {$_.psIsContainer -eq $true} | Where {$_.LastWriteTime -le "$LastWrite"} foreach ($Folder in $Folders) { Remove-Item -path $Folder -Recurse -Force }code` -
好的,首先你会想要使用 get-childitem -directory,以避免另一个管道。调用 $now.adddays 也没有任何意义,直接调用 (Get-Date).AddDays。另外,尝试在删除项目中使用 $folder.fullname
-
你应该edit your code into your question。 IMO 您提供的代码示例只说明了您想要做的事情的一半,而且,如果您展示整个图片,您可能会得到更好的帮助。
标签: powershell