
14634
24.09.2013
Script für Exchange damit User nicht im Adressbuch erscheinen
Hallo,
ich will am Exchange (2003) bei einigen Usern das Häkchen "nicht in Exchange Adresslisten anzeigen" setzten. Ich würde das gerne über ein Script machen da ich es bei ca. 80 Usern machen muss.
Hat hier evtl. jemand ein fertig Script zur Hand?
Vielen Dank für euer hilfe
ich will am Exchange (2003) bei einigen Usern das Häkchen "nicht in Exchange Adresslisten anzeigen" setzten. Ich würde das gerne über ein Script machen da ich es bei ca. 80 Usern machen muss.
Hat hier evtl. jemand ein fertig Script zur Hand?
Vielen Dank für euer hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 217721
Url: https://administrator.de/forum/script-fuer-exchange-damit-user-nicht-im-adressbuch-erscheinen-217721.html
Ausgedruckt am: 11.05.2025 um 06:05 Uhr
21 Kommentare
Neuester Kommentar
Hallo GI05e,
für den Server 2003 sollte folgendes VBS-Script funktionieren: (in Zeile 1 noch den Namen des Containers (DN) angeben indem sich die User befinden)
Grüße Uwe
für den Server 2003 sollte folgendes VBS-Script funktionieren: (in Zeile 1 noch den Namen des Containers (DN) angeben indem sich die User befinden)
StartNode = "OU=SBSUsers,OU=Users,ou=MyBusiness,dc=domain,dc=local"
Set objCommand = CreateObject("ADODB.Command")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection
SearchScope = "subtree"
FilterString = "(&(objectCategory=person)(objectClass=user)" _
& "(proxyAddresses=*)" _
& "(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"
Attributes = "adspath"
LDAPQuery = "<LDAP://" & StartNode & ">;" & FilterString & ";" _
& Attributes & ";" & SearchScope
objCommand.CommandText = LDAPQuery
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute
If not objRecordSet.eof then
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
strUserPath = objRecordSet.Fields("ADsPath").Value
Set objUser = GetObject(strUserPath)
objUser.MSExchHideFromAddressLists = True
objUser.SetInfo
objRecordSet.MoveNext
Loop
End If
objRecordset.Close
objConnection.Close
wscript.echo "Fertig"
Zitat von @14634:
wow danke, hier werden nur die User angefasst die deaktiviert sind oder?
egal ob das Häkchen drin ist oder nicht es wird bei allen Usern die du angibst nochmals gesetzt. Wenn du das nicht willst kann man es leicht erweitern das es abfragt ob das Häkchen schon gesetzt ist(Zeile 31-35 if-Abfrage):wow danke, hier werden nur die User angefasst die deaktiviert sind oder?
StartNode = "OU=SBSUsers,OU=Users,ou=MyBusiness,dc=domain,dc=local"
Set objCommand = CreateObject("ADODB.Command")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection
SearchScope = "subtree"
FilterString = "(&(objectCategory=person)(objectClass=user)" _
& "(proxyAddresses=*)" _
& "(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"
Attributes = "adspath"
LDAPQuery = "<LDAP://" & StartNode & ">;" & FilterString & ";" _
& Attributes & ";" & SearchScope
objCommand.CommandText = LDAPQuery
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute
If not objRecordSet.eof then
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
strUserPath = objRecordSet.Fields("ADsPath").Value
Set objUser = GetObject(strUserPath)
If objUser.MSExchHideFromAddressLists = False then
objUser.MSExchHideFromAddressLists = True
objUser.SetInfo
objRecordSet.MoveNext
End if
Loop
End If
objRecordset.Close
objConnection.Close
wscript.echo "Fertig"
Grüße Uwe
Zitat von @14634:
StartNode = ",ou=Migration_Appsense_XP,ou="Benutzer und Computer (Win7)",dc=xxxx,dc=org"
alles was unter Migration_Appsense_XP ist, will ich nehmen, muss ich da noch cn=*.* hinterlegen?
war fast richtig, (das Komma am Anfang, und die Anführungszeichen um die eine OU müssen noch weg.)StartNode = ",ou=Migration_Appsense_XP,ou="Benutzer und Computer (Win7)",dc=xxxx,dc=org"
alles was unter Migration_Appsense_XP ist, will ich nehmen, muss ich da noch cn=*.* hinterlegen?
So sollte es gehen
StartNode = "ou=Migration_Appsense_XP,ou=Benutzer und Computer (Win7),dc=xxxx,dc=org"
Was für Betriebssystemversion hast du denn jetzt endgültig ?? Exchange Server 2003 ist nicht das Betriebssystem des Servers !!!
Wenn es ein Server 2008 R2 ist dann habe ich noch ein Powershell-Script für einen EX2003:
(hier auch in Zeile ein dein DN deiner User angeben)
Richtig angewendet funktionieren beide Scripte, ansonsten machst du grundlegend was falsch...
Grüße Uwe
Wenn es ein Server 2008 R2 ist dann habe ich noch ein Powershell-Script für einen EX2003:
(hier auch in Zeile ein dein DN deiner User angeben)
$OU = "cn=Users,dc=domain,dc=local"
$objSearch = New-Object System.DirectoryServices.DirectorySearcher
$objSearch.PageSize = 15000
$objSearch.Filter = "(&(objectCategory=User)(objectCategory=Person)(userAccountControl:1.2.840.113556.1.4.803:=2))"
$objSearch.SearchRoot = "LDAP://$OU"
$allUsers = $objSearch.FindAll()
foreach ($user in $allUsers) {
$o = $user.GetDirectoryEntry()
$o.MSExchHideFromAddressLists = $true
$o.CommitChanges()
}
Richtig angewendet funktionieren beide Scripte, ansonsten machst du grundlegend was falsch...
Grüße Uwe
Dann lösch mal die Zeilen 31 und 35 des Codes
also anstatt
sollte es danach so aussehen:
könnte sein das das Attribut der User noch nicht im AD gesetzt sind.
und danach bitte ein Refresh deiner MMC
also anstatt
If objUser.MSExchHideFromAddressLists = False then
objUser.MSExchHideFromAddressLists = True
objUser.SetInfo
objRecordSet.MoveNext
End if
objUser.MSExchHideFromAddressLists = True
objUser.SetInfo
objRecordSet.MoveNext
und danach bitte ein Refresh deiner MMC
hier läuft das alles problemlos... was du noch probieren könntest wäre diese Zeile
durch diese zu ersetzen
und führe das Script mal direkt auf dem DC aus, wie gesagt hier geht es auf einem Server 2003 R2 und auf einem Server 2008 R2 ohne Probleme, es muss also bei Dir etwas nicht stimmen...
Grüße Uwe
FilterString = "(&(objectCategory=person)(objectClass=user)" _
& "(proxyAddresses=*)" _
& "(userAccountControl:1.2.840.113556.1.4.803:=2))"
FilterString = "(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=2))"
Grüße Uwe