Liste des PCs dans Active Directory

Principe :

Pour réaliser une tache de maintenance sur l'ensemble des micros du domaine, il est important d'avoir une liste de ses micros afin de pourvoir cocher les micros traités.

Si de plus, les micros sont rangés par salle (dans des OUs) et par secteur, il est intéressant d'ajouter au fichier ces informations afin de pouvoir adapter le travail en fonction de la localisation du PC

C'est tout simplement une requête sur AD qui recherche tous les objets de type computer.


'--------------------------------------------------------------------------------------
' Liste des ordinateurs du domaine
' Recherche dans AD et sortie en fichier csv
' nom_pc;salle;secteur
' pierre choffardet lpr voillaume
' v 0.1 (11/04/06)
'-------------------------------------------------------------------------------------
Option Explicit

DIM objConnection, objCommand, objRecordSet, objFSO, objF
DIM sOrdi, champs, OU, salle, secteur, strPath, strName
Const ADS_SCOPE_SUBTREE = 2
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")

strName="LISTEPCS"
strPath="C:\"
IF(objFSO.FileExists(strPath&strName&".LST")) Then
objFSO.MoveFile strPath&strName&".LST", strPath&strName&".OLD"
End if
SET objF=objFSO.CreateTextFile(strPath&strName&".LST")
objF.Close
Set objF=objFSO.openTextFile(strPath&strName&".LST",ForAppending)

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCOmmand.ActiveConnection = objConnection
objCommand.CommandText = "Select Name, Location, DistinguishedName from 'LDAP://DC=voillaume,DC=local' Where objectClass='computer'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst

Do Until objRecordSet.EOF
sOrdi = objRecordSet.Fields("Name").Value
champs=split(objRecordSet.Fields("DistinguishedName").Value,",")
OU = split(champs(1),"=")
salle = OU(1)
OU = Split(champs(2),"=")
secteur = OU(1)
objF.WriteLine(sOrdi&";"&salle&";"&secteur)
objRecordSet.MoveNext
Loop
objF.Close