class= " lineNumbers " de
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 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 :
44 :
45 :
46 :
47 :
48 :
49 :
50 :
51 :
52 :
53 :
54 :
55 :
56 :
57 :
58 :
59 :
60 :
61 :
62 :
63 :
64 :
65 :
66 :
67 :
68 :
69 :
70 :
71 :
72 :
73 :
74 :
75 :
76 :
77 :
78 :
79 :
80 :
81 :
82 :
83 :
84 :
85 :
86 :
87 :
88 :
89 :
90 :
91 :
92 :
93 :
94 :
95 :
96 :
97 :
98 :
99 :
100 :
101 :
102 :
103 :
104 :
105 :
106 :
107 :
108 :
109 :
110 :
111 :
112 :
113 :
114 :
115 :
116 :
117 :
118 :
119 :
120 :
121 :
122 :
123 :
124 :
125 :
126 :
127 :
128 :
129 :
130 :
131 :
132 :
133 :
134 :
135 :
136 :
137 :
138 :
139 :
140 :
141 :
142 :
143 :
144 :
145 :
146 :
147 :
148 :
149 :
150 :
151 :
|
class= de
id= " codeSnippet795354 " class= " de ' ===============================================================
'But : Montrer chaque Exchange_Mailbox trouvé pour le serveur d'échange,
'et montrer toutes les propriétés sur l'Exchange_Mailbox
'objets. Le rendement est censé pour être importé dans Excel. Il donnera la perspicacité dans des tailles de boîte aux lettres,
'utilisation etc.
'Note : examiner le site Web de SelfADSI pour assurer la grande information au sujet de l'objet d'utilisateur : http://www.selfadsi.org/
'Changement : cComputerName [corde] l'ordinateur à accéder
'Rendement : Montre le nom de chaque Exchange_Mailbox et de propriétés
'Auteur : Paul Weterings
'www.servercare.nl
'Date : février 2006
'Rev : boîte aux lettres-type supplémentaire par v1.2 du février 2007
'Rev : handeling de date de changement du juillet 2009 v1.3 et délimitation de virgule, email supplémentaire et information handicapée par utilisateur
'Rev : typo fixe de l'août 2009 v1.4 petit
'Version 1.4
'===============================================================
option explicite
'Constantes pour l'objet de NameTranslate.
Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1
Const ADS_NAME_TYPE_DISPLAY = 4
Sur le résumé d'erreur après
cWMINameSpace de Const = « racine/MicrosoftExchangeV2 »
cWMIInstance de Const = « Exchange_Mailbox »
Corde de raccordement de faibles strWinMgmts 'pour WMI
Objet de namespace WMI d'échange de faible objWMIExchange '
Collection d'ExchangeLogons de faibles listExchange_Mailboxs '
Faible objExchange_Mailbox 'un objet simple d'ExchangeLogon WMI
Faible strEmail, strUserInfo, strServerName, objUser, objTrans, strUserDN
'Voir la fonction de WMIDateToString
SetLocale (1043)
Placer l'objUser = le CreateObject (« Scripting.Dictionary »)
Si WScript.Arguments.Count > 0 puis
strServerName = WScript.Arguments.Item (0)
'WScript.echo « vérifiant le serveur d'échange : » et strServername
'Créer la corde d'objet, indiquant WMI (winmgmts), using
'qualifications courantes d'utilisateur (impersonationLevel=impersonate),
'sur l'ordinateur spécifique dans le strServerName de variabele, et
'using le namespace de Productique pour le fournisseur d'échange.
strWinMgmts = « winmgmts : {impersonationLevel=impersonate} ! /« et » de strServerName&/« &cWMINameSpace
Placer l'objWMIExchange = le GetObject (les strWinMgmts)
'Vérifier que nous pouvions placer correctement l'objet.
Si <> 0 d'Err.Number puis
ERREUR de WScript.Echo « : Incapable de se relier au namespace de WMI. » Et Err.Description
Err.Clear
Autrement
'
'Les ressources qui existent actuellement apparaissent comme liste de
'Exemples d'Exchange_Mailbox dans le namespace d'échange.
Placer les listExchange_Mailboxs = l'objWMIExchange.InstancesOf (le cWMIInstance)
'
Est-ce que 'des exemples d'Exchange_Mailbox ont été retournés ?
Si (listExchange_Mailboxs.count > 0) puis
'Si oui, faire ce qui suit :
'Imprimer l'en-tête et le réitérer par la liste d'objets d'Exchange_Mailbox.
Nom d'utilisateur de WScript.echo « ; Jours non utilisés ; Articles ; Taille de mi-bande ; Magasin de boîte aux lettres ; Type de boîte aux lettres ; L'utilisateur a désactivé ; Email primaire »
Pour chaque objExchange_Mailbox dans les listExchange_Mailboxs
objUser = nulle
strUserInfo = ""
'Employer l'objet de NameTranslate pour convertir le nom d'affichage en
'Nom distingué requis pour le fournisseur de LDAP.
'Voir le http://www.rlmueller.net/NameTranslateFAQ.htm
Placer les objTrans = le CreateObject (« NameTranslate »)
'Initialiser NameTranslate en localisant le catalogue global.
objTrans.Init ADS_NAME_INITTYPE_GC, ""
'Employer la méthode d'ensemble pour spécifier le format de NT du nom d'objet.
objTrans.Set ADS_NAME_TYPE_DISPLAY, objExchange_Mailbox.MailboxDisplayName
'Employer la méthode d'obtention pour rechercher le nom distingué de RPC 1779.
strUserDN = objTrans.Get (ADS_NAME_TYPE_1779)
'WScript.Echo « vérifiant : » et objExchange_Mailbox.MailboxDisplayName
'Lier à l'objet d'utilisateur dans l'annuaire actif avec le fournisseur de LDAP.
Placer l'objUser = le GetObject (« LDAP : / » et strUserDN)
Si <> 0 d'Err.Number puis
Problème de WScript.Echo « obtenant l'objet » et le strUserDN et la « erreur : » Et Err.Nr et « : » Et Err.Description
Err.Clear
Finir si
'Laisse maintenant l'affichage toute l'information fonder, notent que seulement la dernière ligne utilisations la traduction.
'sauter les noms misérables d'ANNONCE qui sont les cordes très longues et pas les utilisateurs le plus susceptibles
si len (objExchange_Mailbox.MailboxDisplayName) < 40 alors
'Construire la corde de l'information d'utilisateur
strUserInfo = objExchange_Mailbox.MailboxDisplayName et _
« ; » Et DateValue (maintenant) - DateValue (WMIDateToString (objExchange_Mailbox.LastLogonTime)) &_
« ; » et objExchange_Mailbox.TotalItems et _
« ; » et objExchange_Mailbox.Size et _
« ; » et &_ d'objExchange_Mailbox.StoreName
« ; » et &_ d'objUser.Title
« ; » et objUser.AccountDisabled
'Trouver l'adresse primaire de smtp d'utilisateurs, nous doivent marcher le choix d'adresses
Pour chaque strEmail dans objUser.proxyAddresses
si (strEmail, chapeaux InStr de « smtp ») > 0 alors 'sont employés pour des adresses primaires
strUserInfo = strUserinfo et « ; » Et droit (strEmail, Len (strEMail) - 5)
Finir si
Après
si Len (strUserInfo) > 1 puis
'strUserInfo de WScript.echo
WScript.StdOut.Write objExchange_Mailbox.MailboxDisplayName
'Pas obligatoire si l'utilisateur n'ouvrait jamais une session
Si Len (objExchange_Mailbox.LastLogonTime) > 0 puis
WScript.StdOut.Write « ; » Et DateValue (maintenant) - DateValue (WMIDateToString (objExchange_Mailbox.LastLogonTime))
Autrement
WScript.StdOut.Write « ; - »
Finir si
WScript.StdOut.Write « ; » et objExchange_Mailbox.TotalItems
WScript.StdOut.Write « ; » et objExchange_Mailbox.Size
WScript.StdOut.Write « ; » et objExchange_Mailbox.StoreName
WScript.StdOut.Write « ; » et objUser.Title
WScript.StdOut.Write « ; » et objUser.AccountDisabled
Pour chaque strEmail dans objUser.proxyAddresses
si (strEmail, chapeaux InStr de « smtp ») > 0 alors 'sont employés pour des adresses primaires
'strUserInfo = strUserinfo et « ; » Et droit (strEmail, Len (strEMail) - 5)
WScript.StdOut.Write « ; » Et droit (strEmail, Len (strEMail) - 5)
Finir si
Après
WScript.StdOut.WriteLine
Finir si
Finir si
Après
Autrement
'Si aucun exemple d'Exchange_Mailbox n'était retourné,
'montrer cela.
WScript.Echo « AVERTISSANT : Aucun exemple d'Exchange_Mailbox n'a été retourné. »
Finir si
Finir si
Autrement
Argument de WScript.echo « : Servername »
WScript.echo « où Servername est le nom de NetBIOS du serveur d'échange que vous voulez énumérer »
Finir si
'******************************************************************************
Fonction WMIDateToString (dtmDate)
'Noter que les routines de conversion de corde jusqu'ici dans VBScript ont l'habitude ennuyante d'être « individu guérissant »
'signification : si vous employez la notation des USA le mois et le jour n un endroit différent (mois-jour-année pour les USA, jour-mois-année pour l'EUR)
le 'lieu est employé pour vérifier quel format de date est preferred, mais VBScript vérifiera également les jours/mois pour voir s'il dépasse 12
's'il qui, parce que qui datent jour est présumé. Cependant, quand vous convertissez une rangée de cordes ceci mène au rendement embrouillant : quelques dates sont correctes
'mais pendant des dates avec des jours plus moins de 12 choses seront vissées vers le haut.
'Puisque je suis en Europe, j'emploie le jour-mois (7.2 et 5.2) que vous pouvez vouloir changer ceci pour les USA date (5.2 et 7.2 positions)
'en plus je force le lieu pour employer (les 1043) arrangements hollandais dans le manuscrit, parce que les USA ceci sont 1033 (voir l'en-tête)
WMIDateToString = mi (dtmDate, 7, 2) et « / » et _
Mi (dtmDate, 5, 2) et « / » et _
Gauche (dtmDate, 4) et « «
'Heure sautante pour maintenant, car je n'ai pas besoin de lui.
'Mi (dtmDate, 9, 2) et « : » et _
'Mi (dtmDate, 11, 2) et « : » et _
'Mi (dtmDate, 13, 2)
WMIDateToString = CDate (WMIDateToString)
Fonction de fin
|