5GB 여유 공간을 사용할 수있을 때까지 LRU 폴더를 삭제하려면 어떻게해야합니까?
-
18-09-2019 - |
문제
폴더가 주어졌습니다 \\localhost\c$\work\
.
5GB의 여유 공간을 사용할 수 있도록 15 분마다 PowerShell 스크립트를 실행하고 싶습니다.
<5GB를 사용할 수있는 경우> 5GB를 사용할 수있을 때까지 작업 내에서 가장 최근에 사용 된 폴더를 제거하십시오.
생각?
해결책
작업을 예약하려면 작업 스케줄러를 사용할 수 있습니다 (여기에 예)
스크립트의 경우 사용할 수 있습니다
param($WorkDirectory = 'c:\work'
, $LogFile = 'c:\work\deletelog.txt' )
#Check to see if there is enough free space
if ( ( (Get-WmiObject -Query "SELECT FreeSpace FROM Win32_LogicalDisk WHERE DeviceID = 'C:'").FreeSpace / 1GB ) -lt 5)
{
#Get a list of the folders in the work directory
$FoldersInWorkDirectory = @(Get-ChildItem $WorkDirectory | Where-Object {$_ -is [System.IO.DirectoryInfo]} | Sort-Object -Property LastWriteTime -Descending)
$FolderCount = 0
while ( ( (Get-WmiObject -Query "SELECT FreeSpace FROM Win32_LogicalDisk WHERE DeviceID = 'C:'").FreeSpace / 1GB ) -lt 5)
{
#Remove the directory and attendant files and log the deletion
Remove-Item -Path $FoldersInWorkDirectory[$FolderCount].FullName -Recurse
"$(Get-Date) Deleted $($FoldersInWorkDirectory[$FolderCount].FullName)" | Out-File -Append $LogFile
$FolderCount++
}
}
다른 팁
글쎄, 모든 것은 폴더가 "사용되는"방법에 달려 있습니다. 쉬운 표시기가 없으면 .NET를 사용해 볼 수 있습니다. FileSystemWatcher 클래스는 변경 사항을 찾아서 변경 시간에 따라 순서 대기열의 타임 스탬프뿐만 아니라 변경 사항을 기억해야합니다. 그런 다음 다음 폴더를 선택하여 해당 대기열에서 삭제할 수 있습니다. 그러나 그것은 확실히 예쁘지 않습니다.
제휴하지 않습니다 StackOverflow