给定一个文件夹,比如说 \\localhost\c$\work\
.
我想每 15 分钟运行一次 powershell 脚本,以确保有 5GB 可用空间。
如果 < 5GB 可用,请删除工作中最近最少使用的文件夹,直到 >5GB 可用。
想法?
给定一个文件夹,比如说 \\localhost\c$\work\
.
我想每 15 分钟运行一次 powershell 脚本,以确保有 5GB 可用空间。
如果 < 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类来查找更改并记住它们以及队列中的时间戳,按访问时间排序。然后,您可以选择要从该队列中删除的下一个文件夹。但这肯定不漂亮。