我正在寻找可以监视Windows目录的大小和文件数量的东西。我说的是一些服务器和几千个文件夹(数百万个文件)。
要求:
我更喜欢免费的解决方案,但也希望能指出正确的方向。如果我们自己写,我们将如何做呢?可用的语言是Ruby,Groovy,Java,Perl或PowerShell(因为我会写它)。
答案 0 :(得分:4)
答案 1 :(得分:3)
您可能需要查看PolyMon,这是一个开源系统监控解决方案。它允许您以任何.NET语言编写自定义监视器,并允许您创建自定义PowerShell监视器。
它将数据存储在SQL Server后端并提供图形。出于您的目的,您只需要一个可以获取目录大小和文件数的脚本。 类似的东西:
$size = 0
$count = 0
$path = '\\unc\path\to\directory\to\monitor'
get-childitem -path $path -recurse | Where-Object {$_ -is [System.IO.FileInfo]} | ForEach-Object {$size += $_.length; $count += 1}
回复斯科特的评论: 当然。你可以用while循环包装它
$ESCkey = 27
Write-Host "Press the ESC key to stop sniffing" -foregroundcolor "CYAN"
$Running=$true
While ($Running)
{
if ($host.ui.RawUi.KeyAvailable) {
$key = $host.ui.RawUI.ReadKey("NoEcho,IncludeKeyUp,IncludeKeyDown")
if ($key.VirtualKeyCode -eq $ESCkey) {
$Running=$False
}
#rest of function here
}
我不会为PowerShell监视器执行此操作,您可以安排定期运行,但要使脚本在后台运行,以上操作。您甚至可以添加一些数据库访问代码以将结果记录到数据库,或将其记录到文件中......您想要什么。
答案 2 :(得分:1)
您可以通过PowerShell和WMI实现这一目标。您需要某种类似SQL Express的数据库后端。但我同意像Polymon这样的工具是一种更好的方法。可能造成差异的一件事是规模问题。您需要在1台服务器上监控1个文件夹还是数百个?
答案 3 :(得分:0)
http://sourceforge.net/projects/dirviewer/ - DirViewer是一个轻量级的纯Java应用程序,用于目录树视图和递归磁盘使用统计,使用JGoodies - 外观和外观类似于Windows XP。