Vous êtes sur la page 1sur 18

Cration de scripts sous Microsoft Windows

Introduction WSH, ADSI, LDAP et WMI

Eric Machabert

Fvrier 2004

I) Introduction ................................................................................................................................ 3 II) WSH ........................................................................................................................................... 4 a) Les structures de contrle : ................................................................................................... 5 b) Les oprateurs : ...................................................................................................................... 5 c) Les fonctions et procdures : ................................................................................................. 6 d) Les classes : ............................................................................................................................. 6 e) L'instruction "property" : .................................................................................................... 7 f) La gestion des erreurs : .......................................................................................................... 7 III) WSH et ADSI ........................................................................................................................... 7 a) Les providers : ........................................................................................................................ 7 b) La syntaxe LDAP : ................................................................................................................. 8 c) Mthodes de connexion : ....................................................................................................... 8 1) Mthode des "default credentials" : ..................................................................................... 8 2) Mthode des "alternate credentials": .................................................................................... 8 d) Les scripts : ............................................................................................................................. 9 1) Rapatrier les informations d'un utilisateur : ......................................................................... 9 2) Cration d'une OU : ........................................................................................................... 10 3) Cration d'un groupe : ........................................................................................................ 11 4) Cration d'un utilisateur : ................................................................................................... 11 5) Ajout d'un utilisateur un groupe : .................................................................................... 12 6) Utilisation de fichiers : ....................................................................................................... 12 7) Dplacement d'un objet : .................................................................................................... 14 8) Suppression d'un objet : ..................................................................................................... 14 IV) WSH et WMI : ....................................................................................................................... 14 a) La syntaxe : ........................................................................................................................... 15 b) Enumrer les proprits exposes par une classe : ........................................................... 15 c) Lire les proprits : .............................................................................................................. 16 d) Enumrer les mthodes exposes par une classe: ............................................................. 16 e) Excuter les mthodes : ....................................................................................................... 17 ANNEXE 1 .................................................................................................................................... 17

Eric Machabert

Page 2

17/06/2013

I) Introduction
Chaque administrateur systme le sait, les scripts sont indispensables pour mener bien les diffrentes tches d'administration. Ils permettent une automatisation des traitements et une adaptation votre systme d'information. Microsoft fournit plusieurs outils pouvant intervenir dans la cration de scripts : - WSH : Windows Script Host - ADSI : Active Directory Services Interface - WMI : Windows Management Instrumentation Cet article va mettre en oeuvre ces trois technologies afin de vous en montrer les capacits, elles sont compatibles avec Windows Server 2000/2003 et NT4 condition d'installer le support WSH et ADSI pour NT 4. Cependant cet article na pas pour but de couvrir ces technologies de faon exhaustive, loin de l. Le sujet tant trs vaste je vous donne ici les bases pour dbuter le scripting Windows. Pour tout complment dinformation sur ces technologies, rendez vous sur le site de Microsoft : http://www.microsoft.com/france/scripting/default.asp Tout dabord, une rapide description des ces trois technologies : WSH : Windows Script Host est l'interface de script incorpore Windows, elle utilise VBScript (Visual Basic Script) comme langage. Elle permet de crer rapidement et facilement des scripts trs puissants excutables soit en mode console soit en mode graphique. Pour lexcution, lutilitaire CSCRIPT.EXE est utilis. ADSI : Cette couche permet dattaquer par le code les diffrents annuaires du march (LDAP, Active Directory, Novell E-Directory). On peut donc effectuer les diffrentes tches dadministration inhrentes un annuaire : ajout/suppression/modification/visualisation dobjets. ADSI peut tre invoqu depuis WSH mais galement depuis dautres langages comme C++/VB.

WMI : Cette couche permet de rcuprer beaucoup dinformations sur les machines excutant Windows (version de lOS, taille de la RAM, processus en cours, version du BIOS, cadence actuelle du processeur) mais galement dexcuter des tche dadministration (mise a jour de paramtres, reboot, dmarrer/arrter un processus )

Eric Machabert

Page 3

17/06/2013

II) WSH
WSH est un langage interprt, sa syntaxe est quasiment la mme que celle de Visual Basic et il est trs facile prendre en main, lextension correspondant un script est .vbs. Un simple Notepad suffit pour la cration de scripts. Commenons donc par un script trs simple, celui-ci affiche le contenu dune variable grce la mthode "echo" de l'objet wscript, l'oprateur d'affectation est "=" : Mavariable="Bonjour le monde" wscript.echo Mavariable Rsultat :

Faisons la mme chose mais cette fois-ci avec la phrase afficher passe en paramtre. Pour cela nous allons utiliser la variable "arguments" de l'objet wscript, c'est un tableau contenant les paramtres passs au script : Mavariable = wscript.arguments(0) wscript.echo Mavariable Rsultat :

L'objet wscript permet de faire beaucoup de choses et nous en verrons d'autres par la suite. Pour le moment les autres instructions importantes connatre sont les structures de contrle et les boucles, ce sont les mmes qu'en Visual Basic.

Eric Machabert

Page 4

17/06/2013

a) Les structures de contrle : Le bloc SiSinonFin si : If <test> Then <instruction> Else <instruction> End If La boucle Pour : For <expression> <instruction> Next La boucle Tant que : While <expression> <instruction> Wend La boucle Rpter : Do <instruction> Loop While/Until <expression> Le choix multiple : Select Case <variable> Case <Condition> <instruction> Case <Condition2> <instruction> Case Else <instruction> End select 'possibilit d'utiliser For Each <objet> in <conteneur>

b) Les oprateurs : Addition : + Soustraction : Division : / Eric Machabert Page 5 17/06/2013

Division entire : \ Multiplication : * Concatnation : & Comparaison : Egal : = Diffrent : <> Suprieur : > Infrieur : < c) Les fonctions et procdures : Fonctions : elles se dclarent avec l'instruction "Function", pour retourner une valeur on assigne cette valeur au nom de la fonction Function <mafonction>(<mes arguments>) <instructions> mafonction=<ma valeur de retour> End Function Procdures : elles se dclarent avec l'instruction "Sub" Sub <maprocedure>() <instructions> End Sub Par dfaut, les procdures et les fonctions sont publique, le mot cl "private" permet de les rendre prives. d) Les classes : WSH est un langage de script orient objet, on peut donc utiliser la notion de classe : Dclaration de la classe : Class Maclasse 'Configuration de l'vnement Initialize qui est en fait le constructeur : Private Sub Class_Initialize MsgBox("Une nouvelle instance de Maclasse est cre !!") End Sub 'Configuration de l'vnement Terminate qui est en fait le destructeur : Private Sub Class_Terminate MsgBox("Destruction d'une instance de Maclasse !!") End Sub End Class Set a = new Maclasse 'on cr une nouvelle instance Eric Machabert Page 6 17/06/2013

Set a= nothing 'on dtruit cette instance e) L'instruction "property" : Cette instruction permet de crer une proprit soit l'ensemble constitu d'un nom, d'arguments et de code, utile dans le cas d'une classe par exemple. Property Let/Get <nomproprit>(<arguments>) <instructions> End Property Cas de Get : on retourne la valeur de la proprit Cas de Let : on dfinit la valeur de la proprit f) La gestion des erreurs : Pour viter un plantage de l'application en cas d'erreur, on utilise l'instruction "On Error Resume Next", cela signifie que l'erreur est ignore et l'application continue son excution.

III) WSH et ADSI


Pour commencer, il faut savoir quADSI propose une architecture oriente objet, un annuaire est compos de plusieurs objets qui peuvent tre par exemple : o o o o OU : Unit organisationnelle Group : local, global, universel Computer : un ordinateur User : un utilisateur

Chaque objet possde un certain nombre dattributs et de proprits, par exemple, un utilisateur est caractris par un nom, un prnom, une adresse etc, mais galement par des attributs inhrents au type dobjet lui mme, ainsi un objet utilisateur se voit dot de flags qui correspondent des valeurs boolennes comme par exemple le mot de passe nexpire jamais . ADSI propose l'accs aux annuaires via plusieurs "providers", les deux principaux tant "WinNT" et "LDAP". Ces deux providers permettent d'accder un annuaire AD mais ils ne permettent pas de faire les mmes choses. a) Les providers : WinNT : c'est le provider de type SAM compatible NT4 et 2000/2003, il permet une manipulation simple et rapide des utilisateurs et groupes, il ne gre pas les modles de hirarchisation utilisant les OU, il n'exploite pas l'intgralit des fonctionnalits d'Active Directory.

Eric Machabert

Page 7

17/06/2013

LDAP : celui-ci permet de piloter les annuaires compatibles LDAP du march, il permet galement de piloter Microsoft Exchange 5.0 en lecture et 5.5 en lecture/criture. Il exploite toutes les fonctionnalits d'Active Directory et se rvle le plus rapide. NDS : celui-ci permet de piloter les annuaires Novell (E-Directory par exemple). NWCOMPAT : celui-ci permet une compatibilit avec les annuaires Novell Netware 3.x. Dans ce document, je ferais tous les scripts en utilisant le provider LDAP.

b) La syntaxe LDAP :

Les requtes LDAP se lisent de la droite vers la gauche et sont prfixes par "LDAP://". Ainsi un objet utilisateur nomm "Paul", appartenant l'OU "Ventes" du domaine "mondomaine.com" sera accessible via la requte suivante

LDAP://CN=Paul,OU=Ventes,DC=mondomaine,DC=com O : DC = Domain Component OU= Organizational Unit CN= Common Name c) Mthodes de connexion : Lors de l'criture d'un script vous avez le choix entre deux principales mthodes de connexion, la premire se connecte l'annuaire en utilisant les droits de l'utilisateur qui excute le script, la seconde permet d'envoyer des informations de connexion (nom/mot de passe). 1) Mthode des "default credentials" : On utilise ici les informations de scurit propre l'utilisateur qui excute le script:
Dim conteneur Set conteneur = GetObject("LDAP://,DC=.,DC= ")

2) Mthode des "alternate credentials": On utilise ici un couple nom d'utilisateur/mot de passe pour tablir la connexion :
Dim cont Dim conteneur Set cont = GetObject("LDAP:") Set conteneur=cont.OpenDSObject(Chemin,User,Password,ADS_SECURE_AUTHENTICATION)

Eric Machabert

Page 8

17/06/2013

O : "chemin" correspond au chemin LDAP : LDAP://,DC=,DC= "User" correspond au nom de l'utilisateur "Password" correspond au mot de passe de l'utilisateur On peut galement indiquer explicitement quel serveur on veut utiliser et sur quel port en utilisant un chemin construit de la faon suivante: chemin = "LDAP://monserver.mondomaine.com:389/,DC=,DC=" Cette mthode s'avre trs utile lors de gros traitements sur un annuaire comprenant un certain nombre de membres rplicateurs, cela vite ainsi des problmes de synchronisation lors des rplications. d) Les scripts : Je vais maintenant utiliser ce que nous avons vu prcdemment pour raliser de petits scripts qui manipuleront les donnes d'un annuaire Active Directory. 1) Rapatrier les informations d'un utilisateur : Nous allons commencer par un script trs simple permettant de rcuprer les informations d'un objet, en l'occurrence un utilisateur nomm Paul Dupont, appartenant l'OU Ventes du domaine etoilenoire.local. Ce script excute une simple lecture de l'objet (non exhaustive).

On Error Resume Next Dim conteneur Dim utilisateur,OU wscript.echo "********************************************************" wscript.echo "* Script permettant la lecture d'un utilisateur *" wscript.echo "********************************************************" & vbcrlf utilisateur=wscript.arguments(0) ou=wscript.arguments(1) set conteneur = GetObject("LDAP://CN=" & utilisateur & ",OU=" & ou & ",DC=etoilenoire,DC=local") WScript.Echo "Nom Complet: " & vbTab &conteneur.Get("name") WScript.Echo "Prenom : " & vbTab & conteneur.Get("givenName") WScript.Echo "Nom : " & vbTab & vbTab & conteneur.Get("sn") WScript.Echo "Nom affich: " & vbTab & conteneur.Get("displayName") WScript.Echo "Description: " & vbTab & conteneur.Get("description") WScript.Echo "Bureau : "& vbTab & conteneur.Get("physicalDeliveryOfficeName") WScript.Echo "Telephone : " & vbTab & conteneur.Get("telephoneNumber") WScript.Echo "E-mail: " & vbTab & conteneur.Get("mail") WScript.Echo "Nom systeme complet:" & vbTab & conteneur.Get("userPrincipalName") WScript.Echo "Nom SAM: " & vbTab & conteneur.Get("SAMAccountName") If conteneur.AccountExpirationDate = "01/01/1970" Then WScript.Echo "Le compte n'expire jamais." Else WScript.Echo "Le compte expire le : " & conteneur.AccountExpirationDate

Eric Machabert

Page 9

17/06/2013

End If vbcrlf wscript.echo "Ce compte a t cr le : " & vbTab & conteneur.Get("whenCreated") wscript.echo "La dernire modification date du : " & vbTab & conteneur.Get("whenChanged") wscript.echo "La dernire session ouverte date du : " & vbTab & conteneur.LastLogin echo vbcrlf echo vbcrlf membrede = conteneur.GetEx("memberOf") wscript.echo "Membre de :" For Each groupe in membrede wscript.echo vbTab & groupe Next Set conteneur = Nothing Set membrede = Nothing Set conteneur = Nothing

Nous avons lu ici les proprits d'un utilisateur, un objet parmi d'autres. Il faut donc appliquer la mme mthode pour les autres types d'objets.

2) Cration d'une OU : Nous allons maintenant nous intresser la cration d'objets dans l'annuaire. Pour commencer et suivre un ordre logique nous allons crer une OU.
Set conteneur = GetObject("LDAP://DC=etoilenoire,DC=local") set OU = conteneur.Create("organizationalUnit", "OU=compta") OU.SetInfo

Deux nouvelles mthodes sont noter ici, la premire "Create" qui permet de crer un objet en lui passant comme informations le type d'objet puis son nom. La deuxime "SetInfo" qui finalise la cration (ou modification) car en effet ADSI utilise la notion de "cache", toute action

Eric Machabert

Page 10

17/06/2013

s'effectue sur les donnes en cache (local) puis sont enregistres dfinitivement dans l'annuaire avec cette mthode. 3) Cration d'un groupe : Une fois l'OU cre il convient de crer des groupes afin d'y placer des utilisateurs. Ici il faut prendre en compte une donne supplmentaire par rapport la cration d OU , en effet il existe plusieurs types de groupe : local,global,universel de distribution ou de scurit. 'voici les 4 flags correspondant au types de groupes
ADS_GROUP_TYPE_GLOBAL_GROUP = &h2 ADS_GROUP_TYPE_LOCAL_GROUP = &h4 ADS_GROUP_TYPE_UNIVERSAL_GROUP = &h8 ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000 Set conteneur = GetObject("LDAP://OU=compta,DC=etoilenoire,DC=local") Set groupe = conteneur.Create("group", "CN=secretaires") groupe.Put "SAMAccountName", "secretaires" groupe.Put "groupType", ADS_GROUP_TYPE_LOCAL_GROUP Or _ ADS_GROUP_TYPE_SECURITY_ENABLED groupe.SetInfo

Nous avons ici cr un groupe de scurit "secretaires" de porte locale, si ADS_GROUP_TYPE_SECURITY_ENABLED est omit alors le groupe sera un groupe de distribution. Pour connatre les diffrents flags et leurs valeurs reportez vous l'annexe 1. La proprit "SAMAccountName" correspond au nom antrieur Windows 2000. 4) Cration d'un utilisateur : Maintenant que nous avons une OU avec un groupe dedans, nous allons crer un utilisateur, toutes les proprits de l'objet utilisateur ne seront pas renseignes. Ce script est le script standard (ou presque).

ADS_UF_DONT_EXPIRE_PASSWD = &H10000 Set conteneur = GetObject("LDAP://OU=compta,DC=etoilenoire,DC=local") Set utilisateur = conteneur.Create("user", "CN=Adeline Dupont") utilisateur.Put "SAMAccountName", "Adeline Dupont" utilisateur.SetInfo utilisateur.Put "userPrincipalName", "Adeline.dupont@etoilenoire.local" utilisateur.Put "sn", "Dupont" utilisateur.Put "givenName", "Adeline" utilisateur.Put "displayName", "Adeline Dupont" utilisateur.Put "description", "Secretaire du service compta" utilisateur.Put "mail", "Adeline.dupont@etoilenoire.local" utilisateur.Put "department", "compta" utilisateur.Put "title", "Secretaire" utilisateur.Put "scriptpath", "compta.bat" utilisateur.Put "homeDirectory", "\\serveur.etoilenoire.local\perso\compta\" & "adupont$" utilisateur.SetInfo utilisateur.SetPassword "monpasse"

Eric Machabert

Page 11

17/06/2013

utilisateur.AccountDisabled = False utilisateur.Put "userAccountControl",ADS_UF_DONT_EXPIRE_PASSWD utilisateur.SetInfo utilisateur.AccountExpirationDate = "01/01/2008" utilisateur.SetInfo

On notera la proprit "UserPrincipalName" qui correspond au nom d'ouverture de session. 5) Ajout d'un utilisateur un groupe : Nous allons maintenant ajouter l'utilisateur prcdent au groupe secrtaires.
set groupe = GetObject("LDAP://CN=secretaires,OU=compta,DC=etoilenoire,DC=local") groupe.Add "LDAP://CN=Adeline Dupont,OU=compta,DC=etoilenoire,DC=local"

Si nous excutons le script de lecture d'utilisateur vu plus tt nous obtenons :

6) Utilisation de fichiers : L'intrt des scripts tant d'automatiser les tches, il est vident que vous aurez souvent utiliser des fichiers comme source d'information (ou destination). Prenons l'exemple d'un fichier au format CSV (Coma Separated Values) construit de la sorte : <nom>;<prenom>;<service>;<fonction>;<mot de passe>

'constantes pour le mode d'ouverture des fichiers


ForReading = 1 ' savoir : 2 pour crire et 8 pour le mode append

Eric Machabert

Page 12

17/06/2013

TristateUseDefault = -2 ADS_UF_DONT_EXPIRE_PASSWD = &H10000

set fso = CreateObject("Scripting.FileSystemObject") set fichier = fso.GetFile("c:\users.txt") set temp = fichier.OpenAsTextStream(ForReading, TristateUseDefault) do while (Not temp.AtEndOfStream) ligne = temp.ReadLine champs = Split(ligne,";") nom=champs(0) prenom=champs(1) service=champs(2) fonction=champs(3) motdepasse=champs(4) ajout_util nom,prenom,service,fonction,motdepasse loop Function ajout_util(arg_nom,arg_prenom,arg_service,arg_fonction,arg_pass) Set conteneur = GetObject("LDAP://OU=" & arg_service & ",DC=etoilenoire,DC=local") Set utilisateur = conteneur.Create("user", "CN=" & arg_nom & " " & arg_prenom) utilisateur.Put "SAMAccountName", arg_nom & " " & arg_prenom utilisateur.SetInfo utilisateur.Put "userPrincipalName", arg_nom & "." & arg_prenom & "@etoilenoire.local" utilisateur.Put "sn", arg_nom utilisateur.Put "givenName", arg_prenom utilisateur.Put "displayName", arg_nom & " " & arg_prenom utilisateur.Put "description", arg_fonction & " du service " & arg_service utilisateur.Put "mail", arg_nom & "." & arg_prenom & "@etoilenoire.local" utilisateur.Put "department", arg_service utilisateur.Put "title", arg_fonction utilisateur.Put "scriptpath", service & ".bat" utilisateur.Put "homeDirectory", "\\serveur.etoilenoire.local\perso\" & arg_service & "\" & arg_nom & "$" utilisateur.SetInfo utilisateur.AccountDisabled = False utilisateur.SetPassword arg_pass utilisateur.Put "userAccountControl",ADS_UF_DONT_EXPIRE_PASSWD utilisateur.SetInfo utilisateur.AccountExpirationDate = "01/01/2008" utilisateur.SetInfo ajout_util_groupe arg_fonction,arg_service,arg_nom,arg_prenom set conteneur = nothing set utilisateur = nothing End Function Function ajout_util_groupe(arg_fonction,arg_service,arg_nom,arg_prenom) set groupe = GetObject("LDAP://CN=" & arg_fonction & ",OU=" & arg_service & _ ",DC=etoilenoire,DC=local") groupe.Add "LDAP://CN=" & arg_nom & " " & arg_prenom & ",OU=" & arg_service & _ ",DC=etoilenoire,DC=local" set groupe = nothing End Function

Ce script automatise la cration d'utilisateur en considrant que les groupes et OU ncessaires ont dj t crs. On pourrait galement crer un fichier log nous renseignant sur ce

Eric Machabert

Page 13

17/06/2013

que le script a effectu. Pour cela on peut ajouter ce morceau de code :


ForWriting = 2 If Not fso.FileExists("c:\log.txt") Then set fichierlog = fso.CreateTextFile("c:\log.txt") End If set fichierlog = fso.GetFile("c:\log.txt") set templog = fichierlog.OpenAsTextStream(ForWriting, TristateUseDefault)

Puis chaque utilisateur cr on peut crire une ligne dans le fichier de log avec :
Templog.WriteLine "L'utilisateur " & arg_nom & " cr avec succs le : " & now

7) Dplacement d'un objet : Il se prsente quelque fois la ncessit de dplacer des objets d'une OU une autre, cette action est possible grce la mthode "MoveHere".
set OU = GetObject("LDAP://OU=OUdeDestination,DC=etoilenoire,DC=local") set utilisateur = OU.MoveHere("LDAP://CN=Mon Utilisateur, OU=OUsource, DC=etoilenoire,DC=local", vbNullString)

Attention le dernier paramtre vite que l'objet ne soit renomm. 8) Suppression d'un objet : Pour finir, voici les mthodes de suppression d'objets.
Set conteneur = GetObject("LDAP://OU=compta,DC=etoilenoire,DC=local") conteneur.Delete "user", "CN=Dupont Adeline" Set conteneur = nothing

Attention, si vous tentez de supprimer un objet qui possde un ou plusieurs liens vers des objets enfants alors ADSI refusera cette suppression. Il faut pour cela utiliser une mthode rcursive "DeleteObject"
Set conteneur = GetObject("LDAP://OU=compta,DC=etoilenoire,DC=local") Set monou = conteneur monou.DeleteObject (0)

IV) WSH et WMI :


Eric Machabert Page 14 17/06/2013

Ceci est une brve introduction WMI, elle sera bien moins dtaille que celle sur ADSI mais elle va vous permettre de dcouvrir cet outil que sont les Windows Management Instrumentation.

a) La syntaxe :

Tout comme ADSI, WMI utilise la mthode "GetObject" mais avec un provider diffrent et unique : "winmgmts:\\". Il fonctionne de la mme faon, on lui indique la machine et la source de donnes, il existe plusieurs sources de donnes mais la plus intressante est la "cimv2" qui contient toutes les informations sur le systme et son tat. Celle-ci est dcoupe en classes, une classe par catgorie d'informations (carte mre, processeur, ram etc) et chaque classe possde une collection de proprits nous renseignant sur l'tat du priphrique et ses divers paramtres de configuration.
Set conteneur = GetObject("winmgmts:\\.\root\cimv2")

On notera que pour accder la machine local on utilise un point. Ensuite, on utilise la mthode "ExecQuery" sur le conteneur en lui passant en paramtre une simple requte SQL visant la classe que l'on dsire lire.
Set maclasse = conteneur.ExecQuery("Select * from Win32_Processor")

b) Enumrer les proprits exposes par une classe :

Maintenant il nous faut connatre la liste des proprits exposes par la classe, pour cela on parcoure la ou les instances de la classe (il peut y avoir plusieurs processeurs.) et on affiche les noms des diffrentes proprits :

Set conteneur = GetObject("winmgmts:\\.\root\cimv2") Set maclasse = conteneur.ExecQuery("Select * from Win32_Processor") For Each processeur in maclasse For Each propriete in processeur.properties_ Wscript.Echo propriete.name Next Next

Voici les diffrentes proprits exposes par la classe Win32_Processor :

Eric Machabert

Page 15

17/06/2013

c) Lire les proprits : On possde dsormais le nom des proprits exposes par la classe, nous voulons donc lire leur valeur, il suffit de slectionner la ou les proprits qui nous intressent.
Set conteneur = GetObject("winmgmts:\\.\root\cimv2") Set maclasse = conteneur.ExecQuery("Select * from Win32_Processor") For Each processeur in maclasse Wscript.echo "Modle du processeur : " & processeur.Name Wscript.echo "Vitesse actuelle du processeur : " & processeur. CurrentClockSpeed Next

On obtient :

d) Enumrer les mthodes exposes par une classe:

Eric Machabert

Page 16

17/06/2013

Les classes exposent galement des mthodes auxquelles on peut faire appel. Pour les numrer on utilise la mme procdure que pour les proprits. Prenons l'exemple de la classe Win32_OperatingSystem.
Set conteneur = GetObject("winmgmts:\\.\root\cimv2") Set maclasse = conteneur.ExecQuery("Select * from Win32_OperatingSystem") For Each os in maclasse For Each methode in os.methods_ Wscript.Echo methode.name Next Next

On obtient :

e) Excuter les mthodes : Comme pour les proprits, une fois que l'on connat leurs noms, les mthodes sont simples utiliser. Prenons un exemple rapide et utile : la mthode "Reboot" de la classe Win32_OperatingSystem. Supposons que l'on veuille rebooter distance la machine "yoda" de notre rseau.

Set conteneur = GetObject("winmgmts:\\yoda\root\cimv2") Set maclasse = conteneur.ExecQuery("Select * from Win32_OperatingSystem") For Each os in maclasse os.reboot Next

On excute ce script et la machine reboote, toutes les tches courantes sont stoppes immdiatement.

ANNEXE 1

Eric Machabert

Page 17

17/06/2013

Les constantes Constantes pour ADSI :


ADS_GROUP_TYPE_GLOBAL_GROUP = &h2 ADS_GROUP_TYPE_LOCAL_GROUP = &h4 ADS_GROUP_TYPE_UNIVERSAL_GROUP = &h8 ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000 ADS_SECURE_AUTHENTICATION = &H1 ADS_USE_ENCRYPTION = &H2 ADS_USE_SSL = &H2 ADS_READONLY_SERVER = &H4 ADS_PROMPT_CREDENTIALS = &H8 ADS_NO_AUTHENTICATION = &H10 ADS_FAST_BIND = &H20 ADS_USE_SIGNING = &H40 ADS_USE_SEALING = &H80 ADS_USE_DELEGATION = &H100 ADS_SERVER_BIND = &H200 ADS_UF_SCRIPT = &H1 ADS_UF_ACCOUNTDISABLE = &H2 ADS_UF_HOMEDIR_REQUIRED = &H3 ADS_UF_LOCKOUT = &H10 ADS_UF_PASSWD_NOTREQD = &H20 ADS_UF_PASSWD_CANT_CHANGE = &H40 ADS_UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED = &H80 ADS_UF_TEMP_DUPLICATE_ACCOUNT = &H100 ADS_UF_NORMAL_ACCOUNT = &H200 ADS_UF_INTERDOMAIN_TRUST_ACCOUNT = &H800 ADS_UF_WORKSTATION_TRUST_ACCOUNT = &H1000 ADS_UF_SERVER_TRUST_ACCOUNT = &H2000 ADS_UF_DONT_EXPIRE_PASSWD = &H10000 ADS_UF_MNS_LOGON_ACCOUNT = &H20000 ADS_UF_SMARTCARD_REQUIRED = &H40000 ADS_UF_TRUSTED_FOR_DELEGATION = &H80000 ADS_UF_NOT_DELEGATED = &H100000

Constantes pour l'utilisation de fichiers en WSH :


ForReading = 1 ForWriting = 2 ForAppending = 8 TristateTrue = -1 TristateFalse = 0 TristateUseDefault = -2

Eric Machabert

Page 18

17/06/2013

Vous aimerez peut-être aussi