使用 remove-item cmdlet 时找不到路径 [英] Cannot find path when using remove-item cmdlet
问题描述
我编写了一个简单的 PowerShell 脚本,该脚本将目录备份到 C:\
,然后在其年龄 = X 天时删除任何备份文件夹.
I wrote out a simple PowerShell script that backs up a directory to C:\
and then deletes any of the backup folders when its age = X days.
出于某种原因,当我使用 Remove-Item
cmdlet 时,我得到一个 Remove-Item:找不到路径 'C:\Windows\system32\ [子文件夹名称]' 因为它不存在
错误.
For some reason, when I use the Remove-Item
cmdlet I'm getting a Remove-Item: Cannot find path 'C:\Windows\system32\ [Sub-Folder name]' because it does not exist
error.
以下是片段:
$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
等.
Within the $TargetFolder = "C:\Folder\"
, there are a few sub-folders.
Examples: C:\Folder\SubfolderA
, C:\Folder\SubfolderB
, etc.
当我为 $Folder
执行 Write-Host
时,它会正确列出 SubFolderA
、SubFolderB
等所以我不确定为什么我会收到 Cannot find path
错误.
When I do a Write-Host
for $Folder
it lists SubFolderA
, SubFolderB
, etc, correctly so I'm not exactly sure why I'm getting a Cannot find path
error.
推荐答案
看来你是想在目录LastWriteTime的基础上做这个,但是你没有在Get-ChildItem上提到-Directory.
It seems that you want to do this on the basis of the directory LastWriteTime, but you did not mention -Directory on Get-ChildItem.
[cmdletbinding()]
Param()
$TargetFolder = "C:\Users\lit\Documents"
$Folders = Get-ChildItem -Path $TargetFolder -Directory
$Days = 80
foreach ($Folder in $Folders) {
if ($Folder.LastWriteTime -lt (Get-Date).AddDays(-$Days)) {
Write-Verbose "Deleting directory $($Folder.FullName)"
Remove-Item -WhatIf "$($Folder.FullName)" -Recurse -Force
}
}
这篇关于使用 remove-item cmdlet 时找不到路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!