Chinaunix首页 | 论坛 | 博客
  • 博客访问: 432251
  • 博文数量: 73
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 1260
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-28 09:31
文章分类

全部博文(73)

文章存档

2011年(1)

2010年(18)

2009年(28)

2008年(26)

我的朋友

分类:

2009-01-15 21:14:37

    下面的脚本实现的功能是导出服务器上邮件数据库限额到一个本地文本文件,小程序很粗燥,见笑啦。最后一部分为在生产环境上实际运行的脚本,由于运行在本地客户端,对服务器基本没有产生性能影响,但运行时间令人失望——在ADSL拨号环境中花费10000多秒,在LAN环境中花费 3892 秒(用户数量约为14000)。
 
Sub Initialize
 On Error Resume Next
 Dim ServerName(1 To 9) As String
 Dim i As Integer
 Dim fileName As String
 Dim fileNumber As Integer
 Dim db As NotesDatabase
 
 fileName$ = "c:\notes\data\test.txt"
 fileNumber% = Freefile
 Open fileName$ For Append As fileNumber%
 
 ServerName(1) = "CN=r703/OU=Servers/O=alexcorp"
 ServerName(2) = "CN=r703/OU=Servers/O=alexcorp"
 ServerName(3) = "CN=r703/OU=Servers/O=alexcorp"
 ServerName(4) = "CN=r703/OU=Servers/O=alexcorp"
 ServerName(5) = "CN=r703/OU=Servers/O=alexcorp"
 ServerName(6) = "CN=r703/OU=Servers/O=alexcorp"
 ServerName(7) = "CN=r703/OU=Servers/O=alexcorp"
 ServerName(8) = "CN=r703/OU=Servers/O=alexcorp"
 ServerName(9) = "CN=r703/OU=Servers/O=alexcorp"
 
 For i = 1 To 9
  Dim dbdir As New NotesDbDirectory(ServerName(i))
  Set db = dbdir.GetFirstDatabase(DATABASE)
  While Not (db Is Nothing)
   If Not (db.IsOpen) Then
    Call db.Open("","")
   End If
   If db.Sizequota > 0 Then
'    Msgbox db.Title,,db.Sizequota/1024
    Write #fileNumber%, db.Title,db.Size,db.SizeQuota,db.SizeWarning
   End If
   Set db = dbdir.GetNextDatabase
  Wend
 Next
 
 Close fileNumber%
 
End Sub
 
test.txt文件的内容:
 

C:\notes\data>type test.txt
"User2",18300928,307200,276480
"Test Test Test",18087936,460800,409600
"User4",18305024,307200,276480
"User5",18219008,307200,276480
"User3",18219008,307200,276480
"Alex Chen",18612224,307200,276480
"User7",18350080,307200,276480
"User6",18096128,307200,276480
"Chun Qiang Chen",18096128,307200,276480
"User1 Test",18087936,307200,276480
"User2",18300928,307200,276480
"Test Test Test",18087936,460800,409600
"User4",18305024,307200,276480
"User5",18219008,307200,276480
"User3",18219008,307200,276480
"Alex Chen",18612224,307200,276480
"User7",18350080,307200,276480
"User6",18096128,307200,276480
"Chun Qiang Chen",18096128,307200,276480
"User1 Test",18087936,307200,276480

…… ……

…… ……

实际的应用脚本:

Sub Initialize
   
    On Error Resume Next
   
    Dim startTime As Single
    Dim elapsedTime As Single
    Dim ServerName(1 To 9) As String
    Dim i As Integer
    Dim fileName As String
    Dim fileNumber As Integer
    Dim db As NotesDatabase
   
    startTime! = Timer()
   
    fileName$ = "c:\QuotaInfo.txt"
    fileNumber% = Freefile
    Open fileName$ For Append As fileNumber%
   
    ServerName(1) = "CN=CNML001/O=XXX"
    ServerName(2) = "CN=CNML002/O=XXX"
    ServerName(3) = "CN=CNML003/O=XXX"
    ServerName(4) = "CN=CNML004/O=XXX"
    ServerName(5) = "CN=CNML005/O=XXX"
    ServerName(6) = "CN=CNML006/O=XXX"
    ServerName(7) = "CN=CNML007/O=XXX"
    ServerName(8) = "CN=CNML008/O=XXX"
    ServerName(9) = "CN=CNMLSVP1/O=XXX"
   
   
    For i = 1 To 9
        Dim dbdir As New NotesDbDirectory(ServerName(i))
        Set db = dbdir.GetFirstDatabase(DATABASE)
        While Not (db Is Nothing)
            If Not (db.IsOpen) Then
                Call db.Open("","")
            End If
            If Instr(db.FilePath, "mail") Then
                Write #fileNumber%, db.Title,db.FilePath,db.Size,db.SizeQuota,db.SizeWarning,ServerName(i)
            End If
            Set db = dbdir.GetNextDatabase
        Wend
    Next
   
    Close fileNumber%
   
    elapsedTime! = Timer() - startTime!
    Print "All operations finished in "; elapsedTime; " seconds"
   
End Sub

 

阅读(2033) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~