Proxycímek törlése

Tegnap az egyik kedves barátom egy jóízűt küzdött az Exchange Recipient Policy-aival. A végére nagy nehezen be tudta állítani amit szeretett volna, csak sajnos mire a végére ért a kedves felhasználóknak sikerült egy nagy rakás felesleges és használhatatlan címet generáltatnia. Ez ugye azért történt mert a Recipient Policy címet csak létrehozni tud, törölni nem.
Segítségül gyártottam neki egy scriptet ami kipucolja az AD-t. Konkrétan törli az ÖSSZES nem elsődleges smtp címet a felhasználói objektumok property-ei közül.
Gondoltam itt is közzéteszem a dolgot, hátha egyszer másnak is szüksége van rá. Kéretik nagyon óvatosan használni, mert az összes kézzel felvett nem elsődleges címet is törli. Azért, hogy vissza lehessen nézni, hogy valójában mit is törölt a script mellé a könyvtárba letesz egy removed.log fájlt amiben megtalálható az összes törölt cím.
Mondtam már, hogy nem szeretem a VBScriptet. Nem? Most mondom. Nem szeretem. Ugyanakkor legnagyobb sajnálatomra ezt kénytelen voltam VBScriptben megírni, ugyanis az általam rendszerint használt JScript képtelen normálisan kezelni a VBScript által használt és a különböző rendszerkomponensek által elvárt safearray típust. Olvasni még csak tudná, de írni nem. Itt pedig kellett. Így jártam.
Option Explicit 
Const ADS_SCOPE_SUBTREE = 2 
Const ADS_PROPERTY_DELETE = 4 
Const ForAppending = 8 

Dim rootDSE 
Dim ADDN 
Dim AdConnection 
Dim AdCommand 
Dim AdRecordSet 
Dim AddrList 
Dim i 
Dim FSO 
Dim f 
Dim LogStr 
Dim ProxyFound 
Dim AdUser 

Set FSO = CreateObject("Scripting.FileSystemObject") 
Set f = FSO.OpenTextFile(Mid(WScript.ScriptFullName,1,InStrRev(WScript.ScriptFullName,"\")) & "removed.log",ForAppending,True) 

Set rootDSE = GetObject("LDAP://rootDSE") 
ADDN = rootDSE.Get("defaultNamingContext") 
Set AdConnection = CreateObject("ADODB.Connection") 
Set AdCommand = CreateObject("ADODB.Command") 
AdConnection.Provider = "ADsDSOObject" 
AdConnection.Open "Active Directory Provider" 
Set AdCommand.ActiveConnection = AdConnection 
AdCommand.CommandText = _ 
    "Select distinguishedName, ProxyAddresses from 'LDAP://" & ADDN _ 
    & "' where objectClass='user'" 
AdCommand.Properties("Page Size") = 1000 
AdCommand.Properties("Timeout") = 30 
AdCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
AdCommand.Properties("Cache Results") = False 
Set AdRecordSet = AdCommand.Execute 
AdRecordSet.MoveFirst 
Do Until AdRecordSet.EOF 
    If AdRecordSet.Fields("ProxyAddresses").ActualSize <> 0 Then 
        LogStr = AdRecordSet.Fields("distinguishedName").Value 
        Set AdUser = GetObject("LDAP://" & LogStr) 
        AddrList = AdRecordSet.Fields("ProxyAddresses").Value 
        ProxyFound = False 
        For i = 0 to UBound(AddrList) 
            If Left(AddrList(i),5) = "smtp:" Then 
                ProxyFound = True 
                LogStr = LogStr & ";" & AddrList(i) 
                AdUser.PutEx ADS_PROPERTY_DELETE, "proxyAddresses", Array(AddrList(i)) 
                AdUser.SetInfo 
            End if 
        Next 
        If ProxyFound Then 
            f.WriteLine LogStr 
        End If 
    End if 
    AdRecordSet.MoveNext 
Loop 
f.Close 
AdRecordSet.Close 
AdConnection.Close
Kategória: Exchange | Közvetlen link a könyvjelzőhöz.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s