删除目录对象及其在powershell中的内容

时间:2015-10-04 21:32:59

标签: powershell directory

我有这个脚本试图删除超过7天的所有文件夹。所有文件夹都位于名为“BackupPath”的特定目录下

这是剧本:

 $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”参数调用“Delete”的异常:“目录不是   空。 “          在C:\ Users \ x \ Desktop \ power.ps1:18 char:14        + $ i.Delete<<<< ()         + CategoryInfo:NotSpecified:(:) [],MethodInvocationException         + FullyQualifiedErrorId:DotNetMethodException使用“0”参数调用“Delete”的异常:“目录不为空。”   在C:\ Users \ x \ Desktop \ power.ps1:18 char:14   + $ i.Delete<<<< ()       + CategoryInfo:NotSpecified:(:) [],MethodInvocationException       + FullyQualifiedErrorId:DotNetMethodException

有没有办法强行删除这些文件夹及其内容? 我不知道是否有现成的方法来执行此操作,因为我是PowerShell的新手。

由于

1 个答案:

答案 0 :(得分:1)

-Directory开关只获取文件夹 Where-object根据日期条件过滤这些文件夹 最后remove-item删除它们。(删除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,则“执行某些操作”,否则为“无”