احتجت لتعديل خصائص صندوق بريد على Exchange 2003 وذلك لعمل ما يشبه ابطال صندوق البريد، وللقيام بهذا باستخدام VBScript قمت بكتابة الكود التالي
يقوم الكود أيضا بتعديل قيمة DelivContLength الى 1 أي ان الحد الاقصى للرسالة المسموح باستقبالها سيكون 1 كيلوبايت
يقوم الكود باضافة zz_ قبل عناوين SMTP الخاصة بصندوق البريد
يقوم الكود بالسماح لمستخدم بفتح وحذف صندوق البريد
يقوم الكود بقراءة ملف باسم userlist.txt الذي يحوي displayname لكل المستخدمين المراد ابطال صناديق البريد الخاصة بهم ويقوم بكتابة نتيجة العملية في ملف باسم mailboxmigration.log
on error resume next
strUserFile = "userlist.txt"
logFile = "mailboxmigration.log"
set objFSO = CreateObject("Scripting.FileSystemObject")
strData = objFSO.OpenTextFile(strUserFile, 1).ReadAll
set strLog = objFSO.OpenTextFile(logFile, 8)
arrLines = Split(strData, vbCrLf)
set rootDSE=GetObject("LDAP://RootDSE")
DomainContainer=rootDSE.Get("DefaultNamingContext")
wscript.echo "strdata" & strdata
set adocommand = CreateObject("ADODB.Command")
set conn = CreateObject("ADODB.Connection")
conn.provider = "ADSDSOObject"
conn.Open "Active Directory Provider"
set adocommand.activeconnection = conn
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
set newAce = createobject("AccesscontrolEntry")
newAce.acetype=0
newAce.trustee = "domain\user"
newAce.accessmask ="131073"
newAce.aceflags=2
For each strLine in arrLines
strLog.WriteLine "Processing email: " & strLine
adocommand.commandtext= ";(&(ObjectClass=user)(displayname=" & strLine & "));adspath;subtree"
set rs = adocommand.execute
set userObj = getobject(rs.fields(0).value)
userobj.getinfo
userObj.put "SubmissionContLength", 1
userObj.put "DelivContLength", 1
userObj.setinfo
userobj.getinfo
i=0
vProxyAddresses = userObj.proxyaddresses
maxProxyAddresses = ubound(vProxyAddresses) + 1
while i < maxProxyAddresses
email = vProxyAddresses(i)
if left(email,5) = "SMTP:" then
vProxyAddresses(i) = "SMTP:zz_" & mid(email, 6)
elseif left(email,5) = "smtp:" then
vProxyAddresses(i) = "smtp:zz_" & mid(email, 6)
else
vProxyAddresses(i) = email
end if
i = i + 1
wend
strLog.WriteLine "Email addresses updated successfully"
userObj.proxyaddresses = vProxyAddresses
userObj.setinfo
wscript.echo userobj.displayname & ":" & err.description
set mbRights = userObj.mailboxrights
set dacList = mbRights.discretionaryacl
strLog.WriteLine "Existing mailbox Rights:"
strLog.WriteLine "Trustee | Access Mask | obj.aceflags | Ace Type | Object Type | Inherited Objecttype "
strLog.WriteLine "==============================="
for each obj in dacList
strLog.WriteLine obj.trustee & " | " & obj.accessmask & " | " & obj.aceflags & " | " & obj.acetype & " | " & obj.objecttype & " | " & inheritedobjecttype & " | "
next
strLog.WriteLine "==============================="
dacList.addace newAce
mbRights.discretionaryacl =dacList
userObj.mailboxrights=array(mbRights)
userObj.setinfo
wscript.echo userobj.displayname & ":" & err.description
set userObj = Nothing
rs.Close
Next
strLog.Close
conn.close
set objFSO = Nothing
set newAce = Nothing
No comments:
Post a Comment