使用 remove-item cmdlet 时找不到路径 [英] Cannot find path when using remove-item cmdlet

查看:155
本文介绍了使用 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\SubfolderAC:\Folder\SubfolderB 等.

Within the $TargetFolder = "C:\Folder\", there are a few sub-folders. Examples: C:\Folder\SubfolderA, C:\Folder\SubfolderB, etc.

当我为 $Folder 执行 Write-Host 时,它会正确列出 SubFolderASubFolderB 等所以我不确定为什么我会收到 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆