5GB 여유 공간을 사용할 수있을 때까지 LRU 폴더를 삭제하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1161891

문제

폴더가 주어졌습니다 \\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 클래스는 변경 사항을 찾아서 변경 시간에 따라 순서 대기열의 타임 스탬프뿐만 아니라 변경 사항을 기억해야합니다. 그런 다음 다음 폴더를 선택하여 해당 대기열에서 삭제할 수 있습니다. 그러나 그것은 확실히 예쁘지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top