2015-10-04 75 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

相關問題