5ギガバイトの空き容量が使用可能になるまでどのように私はLRUフォルダを削除することができますか?
-
18-09-2019 - |
質問
と言う、フォルダを考える\\localhost\c$\work\
ます。
私は、空き領域の5ギガバイトが利用可能である保証し、15分ごとにPowerShellスクリプトを実行したいと思います。
<5ギガバイトが利用可能である、作業中に最低使用フォルダを削除するまで>が5ギガバイトが利用可能です。
思考?
解決
タスクをスケジュールするには、ここでタスクスケジューラ(例を使用することができますする )
スクリプトのためにあなたが使用することができます。
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