IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

[VBS] Report Exchange


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut [VBS] Report Exchange
    Bonjour,

    J'ai un script fonctionnel permettant de recuperer ds un fichier txt des information sur les boites exchange.
    On me demande de le modifier pour y rajouter un champ a la fin : le champs "Matricule" se trouvant ds la champs "Bureau" de l'onglet général d'un user Active Directory.

    Voici le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    'Tout sélectionner
        Dim SWBemlocator
        Dim objWMIService
        Dim colItems
        Dim objFSO
        Dim objFile
        strTitle="Mailbox Report"
        strComputer = "srv-exch"
        UserName = ""
        Password = ""
        strLog="c:\Temp\Extract\MailboxReport.csv"
        Set objFSO=CreateObject("Scripting.FileSystemObject")
        Set objFile=objFSO.CreateTextFile(strLog,True)
     
        'This query will fail with the Exchange WMI Provider
        strQuery="Select * from Exchange_Mailbox"
        objFile.WriteLine "Serv : Login ; Nom de la boîte ; Taille de la boîte ; Nombre d'emails"
        'WScript.Echo "Examining " & strComputer
        Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
        Set objWMIService = SWBemlocator.ConnectServer(strComputer,"\root\MicrosoftExchangeV2",UserName,Password)
        Set colItems = objWMIService.ExecQuery(strQuery,,48)
     
        For Each objItem in colItems
        objFile.writeline objItem.LegacyDN & "; " & objItem.MailboxDisplayName & "; " & objItem.Size & "; " & objItem.TotalItems & " "
       Next
     
        objFile.close
    J'ai trouver que la propriétée que je dois rajouter est : "physicalDeliveryOfficeName" mais je n'arrive pas a l'inserer ds la derniere colonne de mon fichiers texte.

    Merci d'avance pour votre aide.

    A bientot.

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    mais je n'arrive pas a l'inserer ds la derniere colonne
    C'est à dire ?
    1. Ton éditeur de texte fait la grève et refuse l'insertion sans augmentation de salaire.
    2. Quelqu'un que tu as énervé a marabouté ton PC et tu ne peut plus faire d'insertion.
    3. Les petits hommes verts ont décidés de te prendre comme tête de turc.
    4. Tu as essayé mais le script plante.
    5. Tu ne sais pas comment àjouter le contenue d'une variable à une string.

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Bravo pour ta reponse, tu sembles avoir de l'humour....

    Je te repondrais reponse 4, j'ai bien esseyé de faire marcher "physicalDeliveryOfficeName" ds mon script mais bien sur, cela ne marche pas.

    Ma connaissnce en vbs ne me permet effectivement pas de pouvoir ajouter une colonne a mon fichier texte en changenat d'"espace de nom" ( mais vraiment pas sur de ce dont je parle la)

    bref, Pour faire claire, j'arrive effectivement a récupérer l'info du champs office en utilisant ADO sur toute l'arborescence AD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    strLog="c:\Temp\Report_VOFRS.csv"
    Set objFSO=CreateObject("Scripting.FileSystemObject")
    Set objFile=objFSO.CreateTextFile(strLog,True)
     
    Set Objconnexion = CreateObject("ADODB.connection")
    Objconnexion.Open "Provider = ADsDSOObject;"
    Set Objcommand = CreateObject("ADODB.Command")
    Objcommand.Activeconnection = Objconnexion
    Objcommand.commandtext="<LDAP://dc=fr,dc=vo,dc=net>;(objectcategory=user);userPrincipalName,name,mail,physicalDeliveryOfficeName,;subtree"
     
    objFile.WriteLine "Login ; Nom de la boîte ; Taille de la boîte ; Nombre d'emails ; Matricule"
     
     
    Set ObjEnregistrement = objcommand.execute
     
    'Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
    'Set objWMIService = SWBemlocator.ConnectServer(strComputer,"\root\MicrosoftExchangeV2",UserName,Password)
    'Set colItems = objWMIService.ExecQuery(strQuery,,48)
     
    Do Until ObjEnregistrement.EOF
     
       objFile.writeline ObjEnregistrement.Fields("userPrincipalName") & ";" & ObjEnregistrement.Fields("Name") & ";" & ObjEnregistrement.Fields("mail")& ";" _
       & ObjEnregistrement.Fields("physicalDeliveryOfficeName") & ";" 
     
       ObjEnregistrement.moveNext
    Loop
     
    Objconnexion.Close
    et a peu près de la même manière , la partie Exchange.

    Mon problème est que je n'arrive pas à mixer les deux. Il doit falloir utiliser une fonction ou une procédure ( peut être .. ) .... ou autre mais c'est cette partie de mix que je n'arrive pas a écrire et donc a remplir la suite du fichier texte pour récupérer les infos.

    Voila, si tu veux faire de l'humour encore, amuse toi, pour ma part, j'espere un peu d'aide pour avancer sur mon probleme.

    En te remerciant par avance ....

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    J'ai effectivement un peu d'humour et je me suis un peu laché.
    Mais je suis sérieux en même temps parce que :
    J'ai trouver que la propriétée que je dois rajouter est : "physicalDeliveryOfficeName" mais je n'arrive pas a l'inserer ds la derniere colonne de mon fichiers texte.
    Cette phrase me donne tellement d'information que je ne sais plus quoi en faire ...

    Tu as compris que c'est de l'ironie. Tu ne donnes pas assez d'information sur "l'erreur". Et même avec ta réponse je ne sais pas ce qu'il se passe:
    1. Dans ton fichier texte il n'y a pas de valeur pour la dernière colonne.
    2. La dernière valeur de la colonne est erronée.
    3. Le script plante et génère une erreur.


    Selon le cas, l'erreur peut être différente :
    1. Pour le cas 1, cela semble être que la propriétè elle même n'est pas renseigné dans l'objet.
    2. Dans le cas 2, la valeur est renseigné mais elle est fausse.
    3. Pour le cas 3 cela dépend de l'erreur générer: Une faute de syntaxe ou la propriété n'existe (ou pour un sous objet) ou autre chose.


    Dis toi que je n'ai pas ton environnement pour tester ton script, et que je ne peux pas tout simplement faire copier coller de ton code dans un fichier, exécuter le script, et obtenir la même chose que toi !!!

  5. #5
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Bonjour,

    Je vais essayer d'etre plus clair, effectivement tu n'a pas forcement de quoi tester avec un AD et de l'Exchange.

    Voici le code en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Dim SWBemlocator
    Dim objWMIService
    Dim colItems
    Dim objFSO
    Dim objFile
    strTitle="Mailbox Report"
    strComputer = "serv-ad"
    UserName = ""
    Password = ""
    strLog="c:\Temp\Extract\bru\MailboxReport.csv"
    Set objFSO=CreateObject("Scripting.FileSystemObject")
    Set objFile=objFSO.CreateTextFile(strLog,True)
     
    'This query will fail with the Exchange WMI Provider
    strQuery="Select * from Exchange_Mailbox"
    objFile.WriteLine "VOFRS003 : Login ; Nom de la boîte ; Taille de la boîte ; Nombre d'emails; Matricule"
    'WScript.Echo "Examining " & strComputer
    Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
    Set objWMIService = SWBemlocator.ConnectServer(strComputer,"\root\MicrosoftExchangeV2",UserName,Password)
    Set colItems = objWMIService.ExecQuery(strQuery,,48)
     
    For Each objItem in colItems
    objFile.writeline objItem.LegacyDN & "; " & objItem.MailboxDisplayName & "; " & objItem.Size & "; " & objItem.TotalItems & ";" & objItem.physicalDeliveryOfficeName & " "
     
    Next
     
    objFile.close
     
    'WScript.Echo "See " & strLog & " for results."


    Lorsque je rajoute la proprietée "physicalDeliveryOfficeName" dans mon script deja existant j'ai l'erreur suivante :

    C:\Documents and Settings\bru\Bureau\extractMailboxSize.vbs(24, 1) Erreur d'exécution Microsoft VBScript: Cet objet ne gère pas cette propriété ou cette méthode: 'objItem.physicalDeliveryOfficeName'

    En esperant que ca soit claire pour toi, et effectivement, je choisi cette fois ci le cas n°3, la proprietée n'existe pas (enfin, il me semble)

    Amicalement.

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Voilà qui est mieux je peux maintenant te dire :
    1. L'erreur signifie que la propriété n'existe pas pour l'objet courant.
    2. En effet Exchange_Mailbox ne possède pas la propriété que tu veux utiliser.
    3. le lien suivant décrit toutes les propriétées et méthodes de l'objet en question : http://msdn.microsoft.com/en-us/library/aa143732.aspx


    J'ai aussi trouvé sur ce site: http://www.activexperts.com/activmon...sgroups/users/
    Un exemple de code dont tu pourrais t'inspirer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Const ADS_PROPERTY_UPDATE = 2 
    Set objUser = GetObject _
       ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com") 
     
    objUser.Put "givenName", "Ken"
    objUser.Put "initials", "E."
    objUser.Put "sn", "Myer"
    objUser.Put "displayName", "Myer, Ken"
    objUser.Put "physicalDeliveryOfficeName", "Room 4358" 
    objUser.Put "telephoneNumber", "(425) 555-1211"
    objUser.Put "mail", "myerken@fabrikam.com"
    objUser.Put "wWWHomePage", "http://www.fabrikam.com"   
     
    objUser.PutEx ADS_PROPERTY_UPDATE, _
        "description", Array("Management staff")
    objUser.PutEx ADS_PROPERTY_UPDATE, _
        "otherTelephone", Array("(800) 555-1212", "(425) 555-1213")  
    objUser.PutEx ADS_PROPERTY_UPDATE, _
         "url", Array("http://www.fabrikam.com/management")
     
    objUser.SetInfo
    Tu peux tenter un msgbox objUser.get "physicalDeliveryOfficeName":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Const ADS_PROPERTY_UPDATE = 2 
    Set objUser = GetObject _
       ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com") 
     
    msgbox objUser.Get "physicalDeliveryOfficeName"
    On ne sait jamais.

    Par contre après si cela ne marche pas, personnellement je n'aurais pas assez de connaissance pour t'aider plus.

Discussions similaires

  1. Exchange - Connection control - VBS
    Par Jaydes dans le forum VBScript
    Réponses: 2
    Dernier message: 01/04/2010, 18h13
  2. Script VBS modif Exchange
    Par Carlito985 dans le forum VBScript
    Réponses: 6
    Dernier message: 12/06/2009, 15h38
  3. [VBS] Création boite mail exchange
    Par stevenhab dans le forum VBScript
    Réponses: 0
    Dernier message: 06/05/2009, 16h11
  4. Reporting Exchange 2003
    Par geriler dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 28/03/2008, 16h29
  5. création/suppression de compte mail exchange en vbs
    Par yubirin dans le forum Exchange Server
    Réponses: 2
    Dernier message: 23/10/2007, 02h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo