Frage

Bei einem Ordner, sagt \\localhost\c$\work\.

Ich möchte ein Powershell-Skript alle 15 Minuten auszuführen, die 5 GB freien Speicherplatz gewährleistet ist verfügbar.

Wenn <5 GB verfügbar ist, entfernen Sie die zuletzt verwendeten Ordner in Arbeit, bis> 5 GB zur Verfügung.

Die Gedanken?

War es hilfreich?

Lösung

Um die Aufgabe zu planen, können Sie den Task-Scheduler verwenden ( Beispiel hier )

Für ein Skript könnten Sie

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++
    } 
}

Andere Tipps

Nun, das hängt alles davon ab, wie Sie Ihre Ordner „verwendet“ werden. Wenn es keine einfachen Indikatoren sind, können Sie versuchen, das .NET Filesystemwatcher mit Klasse für Änderungen zu suchen und sie erinnert sowie einen Zeitstempel in einer Warteschlange, durch Zugriffszeit bestellt. Dann können Sie die nächsten Ordner auswählen aus der Warteschlange zu löschen. Aber es ist sicherlich nicht schön.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top