2015-10-04 122 views
1

我有这个脚本试图删除所有超过7天的文件夹。所有的文件夹都位于被称为“BackupPath”在特定目录下在PowerShell中删除目录对象及其内容

这是脚本:

$date=Get-Date -UFormat "%d-%m-%y" 
$BackupPathday="C:\"+$env:computername+"GPOBackup\$date" 
$BackupPath="C:\"+$env:computername+"GPOBackup" 

if ((Test-Path $BackupPathday) -eq 0) { 
New-Item -ItemType Directory -Force -Path $BackupPathday 
} 
else { 
Write-Host "Today´s backup already exists" 
} 

$Folders=Get-ChildItem $BackupPath 

foreach ($i in $Folders) { 
    $Days=((Get-Date) - $i.CreationTime).Days 
    #PSISContainer is true means that $i is a folder, ohterwise is a file 
    if ($Days -ge 7 -and $i.PsISContainer -eq $True) {  
    $i.Delete() 
    } 
} 

当我运行它,我得到这个错误信息:

异常调用“删除”用 “0” 的参数(一个或多个): “目录不是 空”。 在C:\用户\ X \桌面\ power.ps1:18字符:14 + $ i.Delete < < < <() + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:DotNetMethodException使用“0”参数调用“Delete”的异常:“该目录不是空的。 “ 在C:\用户\ X \桌面\ power.ps1:18字符:14 + $ i.Delete < < < <() + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:DotNetMethodException

有武力删除这些文件夹及其内容什么办法? 我不知道,如果有一个现有的方法来做到这一点作为I'm新的PowerShell的。

感谢

+0

我想到这一点也和它做没有工作: 删除项:找不到路径'C:\ Users \ x \ Desktop \ 26-09-15',因为它不存在... – miticoluis

+0

不幸的是,它也没有工作。 Remove-Item:无法将参数绑定到参数'Path',因为它为空。 – miticoluis

+0

您可能必须使用'GCI $ path -Recurse |删除项目' – user4317867

回答

1

-Directory开关只是取的文件夹,然后 凡客体过滤这些文件夹根据日期条件和 最后删除项删除。(删除Whatif应用的命令)

Get-ChildItem -Path $BackupPath -Directory | 
    Where-Object { ((get-date) - $_.CreationTime).days -ge 7} | 
     Remove-Item -Recurse -WhatIf 

而且当一个测试非现有目录使用

if(-not (Test-path c:\temp)) {"Do something"}else { "nothing"} 

意味着如果表达式计算为false,那么之前的“有所作为”其他“一无所有”

+0

它仍然不起作用; Get-ChildItem:找不到与参数名称“Directory”匹配的参数。 – miticoluis

+0

试过这个并且完美地工作 Get-ChildItem -Path $ BackupPath | Where-Object {(((get-date) - $ _。CreationTime).days -ge 7) - 和($ _。PsISContainer -eq $ True)} | Remove-Item -Recurse – miticoluis

+0

好极了!....我想你有一个powershell版本,dosent具有'-directory'参数。 – Kiran

相关问题