Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[exchange 2003] créer une adresse par script

4 réponses
Avatar
Jerome
Bonjour,

Quelqu'un peut'il m'expliquer comment créer une adresse de messagerie d'un
contact en passant par la ligne de commande ? Je sais le faire par
l'interface graphique ("tâches exchange") mais pas par script.

Merci pour votre aide
Jérôme

4 réponses

Avatar
Stephen ROUX
Bonjour,

Il faut utiliser des interfaces spécifiques pour cela, que l'on appelle via
des scripts généralement.

Je peux vous indiquer des scripts de ce type mais pourvez vous détailler
votre besoin ?

"Jerome" a écrit dans le message de
news:uy0UJR$
Bonjour,

Quelqu'un peut'il m'expliquer comment créer une adresse de messagerie d'un
contact en passant par la ligne de commande ? Je sais le faire par
l'interface graphique ("tâches exchange") mais pas par script.

Merci pour votre aide
Jérôme





Avatar
Jerome
J'ai X contacts a créer : j'utilise "dsadd contact" puis "dsmod group" pour
créer un contact et le rajouter dans une liste de distribution. L
l'option "-email " dans "dsadd contact" ne crée pas
automatiquement la boite aux lettres dans exchange. Il me faut pour cela une
autre commande que je ne connais pas. J'ai trouver des scripts sur internet
pour exchange 2007 mais là je suis sous 2003 : d'où ma demande initiale...

RAPPEL : je ne veux pas utiliser le mode graphique (MMC) car j'ai plusieurs
centaines de contacts a générer.

Jérôme

"Stephen ROUX" a écrit dans le message de
news: O9isec$
Bonjour,

Il faut utiliser des interfaces spécifiques pour cela, que l'on appelle
via des scripts généralement.

Je peux vous indiquer des scripts de ce type mais pourvez vous détailler
votre besoin ?

"Jerome" a écrit dans le message de
news:uy0UJR$
Bonjour,

Quelqu'un peut'il m'expliquer comment créer une adresse de messagerie
d'un contact en passant par la ligne de commande ? Je sais le faire par
l'interface graphique ("tâches exchange") mais pas par script.

Merci pour votre aide
Jérôme








Avatar
Stephen ROUX
Ok.

Vous trouverez ci joint un script vbs qui prend comme paramètre un fichier
texte contenant les logins des comptes à activer pour la messagerie.
Il faut remplacer les valeurs de DCTOUSE et sHomeMDBUrl bien sûr.

Il suffit de copier coller le texte suivant dans un fichier
createmailbox.wsf
Ensuite, il suffit de faire en ligne de commande : cscript createmailbox.wsf
nomdufichiertexte.txt

C'est succinct comme explications mais j'espère que ca ira.

Bon courage.

<package>
<reference object="ActiveDs.ADSystemInfo"/>
<reference object="ActiveDs.WinNTSystemInfo"/>
<reference object="ActiveDs.IADsContainer"/>
<reference object="ActiveDs.IADsUser"/>
<reference object="CDOEXM.ExchangeServer"/>
<reference object="CDOEXM.IMailboxStore"/>
<reference object="CDOEXM.IMailRecipient"/>
<Job id="createmailbox.wsf">
<script language="VBScript">

CONST DCTOUSE = "fqdndudclocal"

Dim Array


On Error Resume Next

' ------------------------------------------------
' Est-ce qu'on passe un fichier en paramètre
' ------------------------------------------------

If WScript.Arguments.Count > 0 Then
sSourceFile = WScript.Arguments.Item(0)
Else
WScript.Quit(1)
End If

WScript.Echo "Création des BAL à partir de " & sSourceFile


' ----------------------------
' On initialise les objets
' ----------------------------

set oFS = CreateObject("Scripting.FileSystemObject")
set oInputFile = oFS.OpenTextFile(sSourceFile)

Set oDNSInfo = CreateObject("ADSystemInfo")
Set oNTInfo = CreateObject("WinNTSystemInfo")
Set oRootDSE = GetObject("LDAP://RootDSE")

sServer = oNTInfo.ComputerName
sDNSDomainName = oDNSInfo.DomainDNSName
sDomainName = oRootDSE.Get("defaultNamingContext")

Set oCommand = CreateObject("ADODB.Command")
Set oConnection = CreateObject("ADODB.Connection")
oConnection.Provider = "ADsDSOObject"
oConnection.Open "Active Directory Provider"
oCommand.ActiveConnection = oConnection

sBase = "<LDAP://" & sDomainName & ">"
sFilter =
"(&(objectClass=user)(objectCategory=person)(sAMAccountName=%USERLOGIN%))"
sAttributes = "ADsPath"
sQuery = sBase & ";" & sFilter & ";" & sAttributes & ";subtree"

sHomeMDBUrl =
"CN=nomdelabanque,CN=nomdusg,CN=InformationStore,CN=nomduserveur,CN=Servers,CN=nomdugroupeadministration,CN­ministrative
Groups,CN=nomorg,CN=Microsoft
Exchange,CN=Services,CN=Configuration,DC=nwtraders,DC=msft"

Err.Clear
Set oExchangeServer = CreateObject("CDOEXM.ExchangeServer")
If Err.Number <> 0 Then WScript.Quit(8)

' ----------------------------
' On parse le fichier
' ----------------------------

Do Until oInputFile.AtEndOfStream

sUserName = ""

array = Split(oInputFile.ReadLine, ";")

If Len(array(1)) > 0 Then

sUserName = array(1)
sNewQuery = Replace(sQuery, "%USERLOGIN%", sUserName)

oCommand.CommandText = sNewQuery
oCommand.Properties("Page Size") = 100
oCommand.Properties("Timeout") = 30
oCommand.Properties("Cache Results") = False

Set oRecordSet = oCommand.Execute

If Not oRecordSet.EOF Then

sADsPath = oRecordSet.Fields("ADSPath")
sADsPath = Replace(sADsPath, "LDAP://", "LDAP://" & DCTOUSE & "/")

WScript.Echo sADsPath

Set oUser = GetObject(sADsPath)
Set oMailboxStore = oUser
Set oRecipient = oUser

Err.Clear
oMailboxStore.CreateMailbox sHomeMDBUrl

If Err.Number = 0 Then
oUser.Put "msExchHideFromAddressLists", FALSE
Err.Clear
oUser.SetInfo
End If

If Err.Number = 0 Then
oMailboxStore.EnableStoreDefaults = TRUE
oRecipient.OutgoingLimit = -1
oRecipient.IncomingLimit = -1
Err.Clear
oUser.SetInfo
End If

If Err.Number = 0 Then
WScript.Echo oUser.DisplayName & " : Ok"
Else
WScript.Echo oUser.DisplayName & "Erreur --> " & Chr(13) &
Err.Number & Chr(13) & Err.Description
End If

End If

End If

Loop

</script>
</Job>
</package>



"Jerome" a écrit dans le message de
news:u3hi6$$
J'ai X contacts a créer : j'utilise "dsadd contact" puis "dsmod group"
pour créer un contact et le rajouter dans une liste de distribution. L
l'option "-email " dans "dsadd contact" ne crée pas
automatiquement la boite aux lettres dans exchange. Il me faut pour cela
une autre commande que je ne connais pas. J'ai trouver des scripts sur
internet pour exchange 2007 mais là je suis sous 2003 : d'où ma demande
initiale...

RAPPEL : je ne veux pas utiliser le mode graphique (MMC) car j'ai
plusieurs centaines de contacts a générer.

Jérôme

"Stephen ROUX" a écrit dans le message de
news: O9isec$
Bonjour,

Il faut utiliser des interfaces spécifiques pour cela, que l'on appelle
via des scripts généralement.

Je peux vous indiquer des scripts de ce type mais pourvez vous détailler
votre besoin ?

"Jerome" a écrit dans le message de
news:uy0UJR$
Bonjour,

Quelqu'un peut'il m'expliquer comment créer une adresse de messagerie
d'un contact en passant par la ligne de commande ? Je sais le faire par
l'interface graphique ("tâches exchange") mais pas par script.

Merci pour votre aide
Jérôme












Avatar
Jerome
Merci, je vais essayer.

Jérôme


"Stephen ROUX" a écrit dans le message de
news:
Ok.

Vous trouverez ci joint un script vbs qui prend comme paramètre un fichier
texte contenant les logins des comptes à activer pour la messagerie.
Il faut remplacer les valeurs de DCTOUSE et sHomeMDBUrl bien sûr.

Il suffit de copier coller le texte suivant dans un fichier
createmailbox.wsf
Ensuite, il suffit de faire en ligne de commande : cscript
createmailbox.wsf nomdufichiertexte.txt

C'est succinct comme explications mais j'espère que ca ira.

Bon courage.

<package>
<reference object="ActiveDs.ADSystemInfo"/>
<reference object="ActiveDs.WinNTSystemInfo"/>
<reference object="ActiveDs.IADsContainer"/>
<reference object="ActiveDs.IADsUser"/>
<reference object="CDOEXM.ExchangeServer"/>
<reference object="CDOEXM.IMailboxStore"/>
<reference object="CDOEXM.IMailRecipient"/>
<Job id="createmailbox.wsf">
<script language="VBScript">

CONST DCTOUSE = "fqdndudclocal"

Dim Array


On Error Resume Next

' ------------------------------------------------
' Est-ce qu'on passe un fichier en paramètre
' ------------------------------------------------

If WScript.Arguments.Count > 0 Then
sSourceFile = WScript.Arguments.Item(0)
Else
WScript.Quit(1)
End If

WScript.Echo "Création des BAL à partir de " & sSourceFile


' ----------------------------
' On initialise les objets
' ----------------------------

set oFS = CreateObject("Scripting.FileSystemObject")
set oInputFile = oFS.OpenTextFile(sSourceFile)

Set oDNSInfo = CreateObject("ADSystemInfo")
Set oNTInfo = CreateObject("WinNTSystemInfo")
Set oRootDSE = GetObject("LDAP://RootDSE")

sServer = oNTInfo.ComputerName
sDNSDomainName = oDNSInfo.DomainDNSName
sDomainName = oRootDSE.Get("defaultNamingContext")

Set oCommand = CreateObject("ADODB.Command")
Set oConnection = CreateObject("ADODB.Connection")
oConnection.Provider = "ADsDSOObject"
oConnection.Open "Active Directory Provider"
oCommand.ActiveConnection = oConnection

sBase = "<LDAP://" & sDomainName & ">"
sFilter =
"(&(objectClass=user)(objectCategory=person)(sAMAccountName=%USERLOGIN%))"
sAttributes = "ADsPath"
sQuery = sBase & ";" & sFilter & ";" & sAttributes & ";subtree"

sHomeMDBUrl =
"CN=nomdelabanque,CN=nomdusg,CN=InformationStore,CN=nomduserveur,CN=Servers,CN=nomdugroupeadministration,CN­ministrative
Groups,CN=nomorg,CN=Microsoft
Exchange,CN=Services,CN=Configuration,DC=nwtraders,DC=msft"

Err.Clear
Set oExchangeServer = CreateObject("CDOEXM.ExchangeServer")
If Err.Number <> 0 Then WScript.Quit(8)

' ----------------------------
' On parse le fichier
' ----------------------------

Do Until oInputFile.AtEndOfStream

sUserName = ""

array = Split(oInputFile.ReadLine, ";")

If Len(array(1)) > 0 Then

sUserName = array(1)
sNewQuery = Replace(sQuery, "%USERLOGIN%", sUserName)

oCommand.CommandText = sNewQuery
oCommand.Properties("Page Size") = 100
oCommand.Properties("Timeout") = 30
oCommand.Properties("Cache Results") = False

Set oRecordSet = oCommand.Execute

If Not oRecordSet.EOF Then

sADsPath = oRecordSet.Fields("ADSPath")
sADsPath = Replace(sADsPath, "LDAP://", "LDAP://" & DCTOUSE & "/")

WScript.Echo sADsPath

Set oUser = GetObject(sADsPath)
Set oMailboxStore = oUser
Set oRecipient = oUser

Err.Clear
oMailboxStore.CreateMailbox sHomeMDBUrl

If Err.Number = 0 Then
oUser.Put "msExchHideFromAddressLists", FALSE
Err.Clear
oUser.SetInfo
End If

If Err.Number = 0 Then
oMailboxStore.EnableStoreDefaults = TRUE
oRecipient.OutgoingLimit = -1
oRecipient.IncomingLimit = -1
Err.Clear
oUser.SetInfo
End If

If Err.Number = 0 Then
WScript.Echo oUser.DisplayName & " : Ok"
Else
WScript.Echo oUser.DisplayName & "Erreur --> " & Chr(13) &
Err.Number & Chr(13) & Err.Description
End If

End If

End If

Loop

</script>
</Job>
</package>



"Jerome" a écrit dans le message de
news:u3hi6$$
J'ai X contacts a créer : j'utilise "dsadd contact" puis "dsmod group"
pour créer un contact et le rajouter dans une liste de distribution. L
l'option "-email " dans "dsadd contact" ne crée pas
automatiquement la boite aux lettres dans exchange. Il me faut pour cela
une autre commande que je ne connais pas. J'ai trouver des scripts sur
internet pour exchange 2007 mais là je suis sous 2003 : d'où ma demande
initiale...

RAPPEL : je ne veux pas utiliser le mode graphique (MMC) car j'ai
plusieurs centaines de contacts a générer.

Jérôme

"Stephen ROUX" a écrit dans le message de
news: O9isec$
Bonjour,

Il faut utiliser des interfaces spécifiques pour cela, que l'on appelle
via des scripts généralement.

Je peux vous indiquer des scripts de ce type mais pourvez vous détailler
votre besoin ?

"Jerome" a écrit dans le message de
news:uy0UJR$
Bonjour,

Quelqu'un peut'il m'expliquer comment créer une adresse de messagerie
d'un contact en passant par la ligne de commande ? Je sais le faire par
l'interface graphique ("tâches exchange") mais pas par script.

Merci pour votre aide
Jérôme