Automatisez la création de compte à l'aide de PowerShell. Création et exécution de scripts. Comment savoir qui a créé un compte dans Active Directory

Le script parcourt tous les serveurs d'Active Directory, examine la composition du groupe d'administrateurs local et enregistre la liste dans un fichier. Sera utile pour maintenir la sécurité dans un environnement avec un grand nombre de serveurs.

Exemple de script Description du script
1 - 4 Nous définissons des variables pour une utilisation ultérieure.
1 Chemin d'accès au fichier dans lequel le résultat sera enregistré.
2 Conteneur dans Active Directory qui contient les comptes d'ordinateurs serveurs.
3 Nous créons également un tableau de hachage. Dans Powershell, cela doit être fait avant de commencer à l'utiliser.
4 Créez une variable vide. Nous le remplirons avec une liste d'utilisateurs membres du groupe Administrateurs.
6 - 21 Fonction de recherche d'utilisateurs dans le groupe Administrateurs.
7 Le nom du serveur sera transmis à la fonction. Nous allons l'enregistrer dans la variable $strcomputer
8 - 12 Nous créons une exception pour l'opération en cours. Si la demande n'est pas complétée correctement, le nom du serveur sera affiché à l'écran.
9 Nous accédons à l'objet win32_groupuser dans WMI avec une liste de groupes Windows.
11 Si un appel à WMI échoue (le plus souvent en raison de l'indisponibilité de RPC), le nom du serveur actuellement appelé sera affiché à l'écran.
13 La condition sous laquelle l'existence de la variable avec la liste des groupes obtenue à la ligne 9 est vérifiée
14 Nous créons une variable qui inclura une liste d'utilisateurs du groupe Administrateurs ou Administrateurs (sur les serveurs avec la version anglaise).
15 - 18 Nous supprimons les utilisateurs du groupe administratif et supprimons les informations de service inutiles.
19 La fonction renvoie une liste d'utilisateurs.
23 Nous créons une variable et y plaçons une liste d'ordinateurs sur lesquels nous rechercherons des administrateurs. Dans cet exemple, il s'agit d'ordinateurs issus d'Active Directory.
24 - 29 Nous extrayons les serveurs un par un qui ont été obtenus à la ligne 23.
25 Nous exécutons la fonction et lui transmettons le nom du serveur. Le résultat du travail est écrit dans la variable $UserList
26 La condition vérifie la présence d'une valeur dans la variable $UserList
27 S'il existe une liste d'utilisateurs, ajoutez-la au tableau $AdminList
31 - 35 Nous parcourons le tableau $AdminList et ajoutons à la liste des serveurs et des administrateurs correspondants.
32 Nous créons une variable dans laquelle nous écrivons le nom du serveur.
33 Nous créons une variable dans laquelle nous placerons la liste des utilisateurs du serveur à partir de la ligne 32.
34 La variable $ToCSV contient des lignes pour le futur fichier. Chaque ligne contient le nom du serveur et une liste d'administrateurs, séparés par un point-virgule.
37 - 39 On vérifie la présence du fichier dans le système dans lequel on veut placer le résultat du script. Si le fichier existe, supprimez-le.
41 Nous créons un fichier de téléchargement et y plaçons une liste d'administrateurs.

Vous vous souvenez des fichiers DOS BAT ? C'était un excellent moyen d'automatiser les tâches répétitives. Windows, hélas, n'a pas proposé de remplacement équivalent et les outils tiers n'ont pas fait leur chemin pour diverses raisons. Mais la situation semble s'améliorer. Windows Scripting Host (WSH) - un nouvel hôte de script indépendant du langage pour Win9x et NT, vous permet de créer des analogues de fichiers BAT dans Visual Basic Scripting Edition, JScript et d'autres langages de script, par exemple Active Perl ou Python.

Nous discuterons ici de certains des avantages de Windows Scripting Host.

Avantages de l'hôte de script Windows

Auparavant, le seul langage de script pris en charge par Windows était le langage de commande DOS. Mais ses capacités sont assez médiocres par rapport à VBScript et JScript. Bien que le langage de commande DOS soit toujours pris en charge, les scripts ActiveX modernes vous permettent de résoudre des problèmes plus complexes.

Le script peut prendre des décisions basées sur l'utilisation d'instructions If/Else complètes. Un script peut exécuter un ensemble de commandes si une condition donnée est vraie, ou un autre ensemble si la condition est fausse. De plus, JScript et VBScript sont efficaces pour effectuer des opérations mathématiques, y compris des fonctions trigonométriques courantes.

Une autre fonctionnalité de Windows Scripting Host est que les scripts peuvent être exécutés en dehors du navigateur. Cliquez simplement sur le fichier avec le texte du script ou entrez son nom sur la ligne de commande pour le lancer pour exécution. Windows Scripting Host est gourmand en mémoire et parfait pour l’automatisation Windows.

Machines hôtes et scripts

Quelle que soit la qualité des langages de script, vous ne pouvez pas faire grand-chose avec eux. Ils sont incapables d'affecter quoi que ce soit en dehors du script natif. Ces langages ne disposent pas d'instructions directes qui vous permettent de lire ou d'écrire des fichiers sur le disque, d'afficher des informations sur la ligne de commande, de modifier les entrées du registre Windows, etc.

Pour faire face à de telles tâches, vous pouvez utiliser des objets COM supplémentaires. Un certain nombre de ces objets sont inclus dans la distribution WSH, et l'un d'eux, WScript, a même une instanciation déjà créée et peut être utilisé directement, sans être créé au préalable. Les autres sont créés à l'aide d'une syntaxe spécifique au langage ou de la fonction WScript.CreateObject.

Objets WSH

Windows Scripting Host est livré avec 4 objets : Wscript, WshShell, WshNetwork et FileSystemObject.

Chaque objet possède naturellement un ensemble de ses propres méthodes et propriétés.

L'objet Wscript permet aux scripts de « se connaître eux-mêmes ». De plus, cet objet permet aux scripts de lancer et de contrôler des applications. Les principales propriétés et méthodes de cet objet sont répertoriées dans le tableau 1.

Description de la propriétéDescription de la méthode
Arguments Renvoie un pointeur vers une liste d'arguments de ligne de commande
Nom et prénom Renvoie le nom de l'exécutable hôte et son chemin complet (par exemple, C:\Windows\wscript.exe)
Nom Affiche un merveilleux message Windows Scripting Host
Chemin Spécifie le répertoire et le chemin contenant wscript.exe ou cscript.exe
ScriptFullName Renvoie le chemin complet et le nom du script en cours d'exécution
Nom du script Identique à ScriptFullName, mais sans chemin
Version Renvoie la version de l'hôte de script Windows installé
Créer un objet Crée un objet par son ProgID
Connecter l'objet Vous permet de vous connecter aux événements d’objet. En paramètre, il prend l'objet auquel il faut se connecter et le préfixe des procédures correspondant aux événements, implémentées dans le script
DéconnecterObjet Se déconnecte d'un objet connecté par la méthode précédente
Écho Affiche une chaîne de texte (en cscript - en StdOut, en Wscript - sous la forme d'une boîte de dialogue.
ObtenirObjet Permet d'obtenir un pointeur vers un objet à partir d'un fichier ou d'un objet spécifié dans le paramètre strProgID.
Quitter Termine le script
Dormir Place le script dans un état inactif pendant la durée spécifiée en millisecondes

Tableau 1. Méthodes et propriétés de l'objet WScript

L'objet WshShell permet aux scripts d'installer et de configurer d'autres applications. Il offre également la possibilité de communiquer avec l'utilisateur, de modifier le registre et de localiser des dossiers. Certaines de ses propriétés et méthodes sont répertoriées dans le tableau 2.

Description de la propriétéDescription de la méthode
Environnement

Renvoie un objet qui permet d'obtenir les valeurs des variables d'environnement, par exemple

Définir WSHShell = CreateObject("WScript.Shell") Définir WshSysEnv = WshShell.Environment("Process") WScript.Echo WshSysEnv("windir")

Dossiers spéciaux

Renvoie le chemin complet vers des dossiers spéciaux tels que le menu Démarrer.

Voici une liste des dossiers disponibles : AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, Desktop, Favoris, Polices, MyDocuments, NetHood, PrintHood, Programmes, Récent, SendTo, StartMenu, Démarrage, Modèles.

Courir Lance l'application. strCommand est la commande à exécuter, le paramètre intWindowStyle vous permet de contrôler la position et le comportement des fenêtres, et bWaitOnReturn vous permet d'indiquer à l'objet WshShell s'il doit attendre la fin de l'exécution de l'application en cours d'exécution.
Surgir Une autre façon d'afficher du texte dans une fenêtre
Créer un raccourci Crée des raccourcis de fichiers ou des URL
RegLecture Renvoie la valeur d'une clé ou d'une entrée de registre par son nom
RegWrite Crée une nouvelle clé ou entrée de registre ou écrit une nouvelle valeur dans une valeur existante.
RegSupprimer Supprime une clé ou une entrée de registre
Journal d'événement Permet d'écrire un message dans le journal des événements de Windows NT ou W2K ou dans le fichier WSH.log dans le cas de Windows 9x
DévelopperEnvironmentStrings Vous permet de développer une chaîne contenant des variables d'environnement
EnvoyerClés Vous permet d'émuler la saisie au clavier

Tableau 2. Propriétés et méthodes de l'objet WshShell

L'objet WshNetwork est utilisé lors de la création de scripts qui modifient la configuration réseau. Cela inclut des tâches telles que la connexion à un réseau, l'installation d'imprimantes, l'attribution de lettres de lecteur aux lecteurs réseau, etc. Les principales propriétés et méthodes de WshNetwork sont répertoriées dans le tableau 3.

Propriétés DescriptionDescription de la méthode
Nom de l'ordinateur Renvoie le nom de l'ordinateur
Domaine utilisateur Renvoie le nom du domaine dans lequel l'utilisateur est enregistré
Nom d'utilisateur Retours devinez quoi !
MapNetworkDrive Attribue une lettre attribuée par l'utilisateur à un lecteur réseau
EnumNetworkDrives Renvoie une liste des lecteurs réseau mappés
SupprimerNetworkDrive Déconnecte un lecteur réseau
AjouterWindowsPrinterConnection Vous permet d'installer une nouvelle imprimante sous Windows, c'est-à-dire de spécifier le chemin d'accès à l'imprimante et de lancer l'installation des pilotes.
Ajouter une connexion imprimante Connecte une imprimante réseau
Supprimer la connexion d'imprimante Désactive une imprimante réseau
SetDefaultPrinter Définit l'imprimante par défaut
EnumPrinterConnections Renvoie une liste des imprimantes connectées

Tableau 3. Propriétés et méthodes de l'objet WshNetwork

Le dernier objet, FileSystemObject, est nécessaire pour les opérations sur disque. Cela inclut la lecture, l'écriture, la suppression de fichiers et la création de répertoires.

FileSystemObject a les méthodes BuildPath, CopyFile, CopyFolder, CreateFolder, CreateTextFile, DeleteFile, DeleteFolder, DriveExists, FileExists, FolderExists, GetAbsolutePathName, GetBaseName, GetDrive, GetDriveName, GetExtensionName, GetFile, GetFileName, GetFolder, GetParentFolderName, , GetTempName, MoveFile, MoveFolder, OpenTextFile . Leurs noms n'ont pas besoin d'une explication distincte. Sa seule propriété, Drives, renvoie une liste des lecteurs disponibles sur cette machine, y compris les lecteurs réseau.

De quoi avez-vous besoin pour commencer ?

La première chose à faire est de vous assurer que vous disposez de Windows Scripting Host. Il était initialement inclus dans W2K. Si vous utilisez Windows 98 ou Internet Information Server 4.0, ou si vous avez installé l'Option Pack pour Windows NT 4 et Windows 95, vous l'avez certainement. Dans le cas de Windows 95, tout devient plus compliqué et Windows Scripting Host devra être téléchargé depuis le site Web de Microsoft (msdn.microsoft.com/scripting). Écrivez wscript sur la ligne de commande. Si une boîte de dialogue apparaît avec autre chose que « Fichier introuvable », tout va bien.

Microsoft ne fournit pas d'éditeur de script visuel WSH. Mais le Bloc-notes va bien.

Création et exécution de scripts

Comparé à divers plaisirs de la programmation, l'écriture de scripts pour Windows Scripting Host est relativement simple. Dans le Bloc-notes, vous écrivez votre script en utilisant les objets mentionnés. Enregistrez ensuite le fichier avec l'extension .vbs pour VBScript ou .js pour JScript.

Exécuter des scripts est également une tâche facile. Il existe plusieurs façons. Le plus simple est la ligne de commande DOS et une version similaire de Windows Scripting Host, CSCRIPT.EXE. Cette version vous permet de contrôler l'exécution du script à l'aide de paramètres de ligne de commande.

Les options de l'hôte activent ou désactivent diverses options de l'hôte de script Windows et sont toujours précédées de deux barres obliques (//). Le nom du script est toujours le nom du fichier et les paramètres du script sont les paramètres transmis au script. Ces paramètres sont toujours précédés d'une seule barre oblique (/). Le tableau 4 contient certains paramètres CSCRIPT.EXE.

Tableau 4. Options de ligne de commande CSCRIPT.EXE

Si vous ne souhaitez pas voir les fenêtres avec un bouton OK, utilisez cscript.exe et utilisez la méthode WScript.Echo pour afficher les messages.

Il existe trois façons d'exécuter des scripts à l'aide de wscript.exe.

L'une d'elles consiste simplement à double-cliquer sur le fichier ou l'icône. Une autre consiste à sélectionner Exécuter... dans le menu Démarrer et à écrire le nom complet du fichier dans la zone de texte Ouvrir. Enfin, vous pouvez exécuter WSCRIPT.EXE lui-même à partir du même Run..., en y ajoutant le nom du script et l'un des paramètres possibles.

Exemple de script

Essayons d'écrire un script en VBScript. L'exemple spécifique présenté dans le listing 1 est fourni par Microsoft et peut être obtenu (ainsi que plusieurs autres) sur leur site WWW : .

Liste 1

" Cet exemple montre comment utiliser l'objet WSHShell " pour créer un raccourci sur le Bureau. L_Welcome_MsgBox_Message_Text = _ "Ce script créera un raccourci pour le Bloc-notes sur le bureau." L_Welcome_MsgBox_Title_Text = "Exemple d'hôte de script Windows "Appeler Welcome()" ************************************* ************************** * " * Méthodes associées aux raccourcis. " *DimWSHShell Set WSHShell = WScript.CreateObject("WScript.Shell") Dim MyShortcut, MyDesktop, DesktopPath " Lire le chemin d'accès au bureau DesktopPath = WSHShell.SpecialFolders("Desktop") " Créer un raccourci sur le bureau Set MyShortcut = WSHShell .CreateShortcut (DesktopPath & _ "\Shortcut to notepad.lnk") " Définissez les propriétés de l'objet raccourci et enregistrez-les MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings _ ("%windir%\notepad.exe") MyShortcut.WorkingDirectory = WSHShell .ExpandEnvironmentStrings _ ("%windir%") MyShortcut.WindowStyle = 4 MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings _ ("%windir%\notepad.exe, 0") MyShortcut.Save WScript.Echo "Il existe désormais un raccourci pour le Bloc-notes sur le bureau." " ************************************************* *************** " * " * Bienvenue " * Sub Welcome() Dim intDoIt intDoIt = MsgBox(L_Welcome_MsgBox_Message_Text, _ vbOKCancel + vbInformation, _ L_Welcome_MsgBox_Title_Text) Si intDoIt = vbCancel Then ;WScript . Quitter Fin Si Fin Sous

Ce script crée un raccourci pour le Bloc-notes sur le bureau. Je voudrais noter que désormais nos tâches n'incluent pas d'enseigner aux utilisateurs comment programmer en VB ou Java. Cependant, cet exemple vous donnera une idée de ce que Windows Scripting Host peut faire avec quelques compétences de base en programmation.

Il est désormais temps de passer à des applications plus significatives du WSH. WSH sera probablement plus utile aux administrateurs qui en ont assez de la répétition régulière des mêmes actions. Les administrateurs Windows NT n'avaient pas les capacités des administrateurs UNIX, qui utilisaient des scripts depuis des siècles. Avec l'avènement de WSH, la donne a changé, d'autant plus que WSH permet de profiter de technologies externes aux langages de script, comme Windows Management Instrumentation (WMI) et Active Directory Services Interface (ADSI).

WMI et ADSI sont ceux que nous utiliserons. Je suppose donc que vous avez au moins une compréhension de base de ces technologies. Vous pouvez obtenir plus d'informations à leur sujet aux adresses et

Ces exemples supposent que vous utilisez W2K, pour d'autres plates-formes, vous devrez peut-être installer WMI et ADSI.

Utilisation de WSH et WMI pour créer des scripts de connexion

Comme vous le savez, de tels scripts impliquent d'être lancés à l'heure de début. Le listing 2 montre un script de démarrage qui détermine le type d'utilisateur de connexion et exécute des tâches basées sur ces informations.

Liste 2

en cas d'erreur, reprenez ensuite set wshNetwork = WScript.CreateObject("WScript.Network") Set wshShell = WScript.CreateObject("WScript.Shell") do while wshNetwork.username = "" WScript.Sleep 250 loop user = wshNetwork.username domain = wshNetwork.userdomain Wscript.echo "Connexion à " & ucase(domain) & "\" & user & "..." " en utilisant ADSI, nous obtenons une liste des groupes auxquels l'utilisateur appartient adspath = "WinNT://" & domain & " /" & user set adsobj = GetObject(adspath) " Appelez d'autres routines basées sur le groupe Windows NT de l'utilisateur pour chaque prop dans adsobj.groups sélectionnez le cas prop.name case "Administrateurs" appelez Adminslogon cas "YourNewGroup" appelez VotreNouveauGroupeConnexion Fin Sélectionner Suivant

Tout d'abord, le script crée des objets courants que vous devrez utiliser, tels que les objets WScript.Network et WScript.Shell. Il utilise ensuite ces objets pour déterminer les informations sur le nom d'utilisateur et le domaine. Enfin, à l'aide du script ADSI, il renvoie des informations contenant le groupe d'utilisateurs. Ces informations sont utilisées pour déterminer la routine appropriée à appeler pour chaque groupe d'utilisateurs. Ceci est effectué par l'instruction Select Case.

Le script de démarrage pour les utilisateurs du groupe Windows NT que nous avons créé (sous le nom YourNewGroup) utilise les capacités réseau de WSH. Il vérifie si la lettre Z est utilisée. Si elle est libre, le lecteur Z est attribué à \\yourserver\NETLOGON en utilisant le format \\server\share.

Pour expliquer le fonctionnement du script de démarrage, certaines routines et fonctions sont incluses dans le texte de l'article. Vous pouvez simplement les remettre à leur place dans le bloc du listing 2.

Sub Domainlogon si CheckNetworkMapping("z:", "\\yourserver\NETLOGON") = false alors MapNetwork "z:", "\\yourserver\NETLOGON " end if end sub

La fonction CheckNetworkMapping répertorie différentes lettres de lecteur pour déterminer si une lettre de lecteur donnée est utilisée (voir Listing 3). Il renvoie vrai ou faux en fonction de la disponibilité de la lettre donnée. Si c'est vrai, la routine MapNetwork est appelée pour effectuer le mappage. Cette routine utilise la méthode MapNetworkDrive de l'objet wshNetwork pour attribuer la lettre appropriée à la ressource réseau. Des informations plus complètes sur l'objet wshNetwork peuvent être obtenues dans le tableau 3.

Liste 3

"vérifier la présence d'un lecteur réseau, sinon ajouter " Cette fonction vérifie la présence d'un lecteur réseau Function CheckNetworkMapping(DriveLetter) Dim Drive WScript.Echo "Vérifier la présence d'un lecteur réseau mappé " & DriveLetter CheckNetworkMapping = False pour chaque lecteur dans wshNetwork.EnumNetworkDrives If LCase(Drive ) = LCase(DriveLetter) Then CheckNetworkMapping = True Exit For End If Next If CheckNetworkMapping Then WScript.Echo "Lecteur réseau trouvé" Sinon WScript.Echo "Lecteur réseau introuvable" End If End Function " Cette routine associe une lettre au sous-répertoire réseau MapNetwork (driveletter, netshare) en cas d'erreur de reprise suivante err.clear WScript.Echo "Mappage d'un lecteur réseau." wshNetwork.MapNetworkDrive driveletter, netshare, true si erreur 0 alors "Connexion échec de WScript.Echo "ne peut pas associer" & driveletter & " avec " & netshare else WScript.Echo "OK..." end if end sub

Les administrateurs peuvent souhaiter des informations plus détaillées qu'une description des ressources réseau et de l'environnement utilisateur. Ils peuvent avoir besoin d'informations sur l'ordinateur, telles que les variables d'environnement, la configuration de l'ordinateur, les périphériques matériels, etc. En utilisant uniquement le modèle objet WSH, le code suivant vous montrera comment afficher certaines informations sur l'environnement et le registre de votre ordinateur.

Sub Adminslogon Wscript.Echo _ "Cette procédure renvoie les valeurs des variables d'environnement de base pour cet ordinateur."

ReturnENV Wscript.Echo regProxy Wscript.Echo "Les deux lignes suivantes vous demandent de saisir le serveur, le nom d'utilisateur et le mot de passe Wscript.Echo "Les adresses IP de cet ordinateur : " & GetIPAddress _ ("votre serveur", "administrateur", "p- word" ) Wscript.Echo "Quantité totale de RAM sur cette machine : " & GetRAM _("votreserveur", "administrateur", "p-word") end sub

Ce script est donné uniquement à titre d'exemple : il serait frivole de stocker le mot de passe administrateur en texte clair.

Que pouvez-vous faire d'autre avec les objets fournis avec WSH ? Par exemple, vous pouvez obtenir des informations sur votre ordinateur. Cela peut être fait en utilisant la méthode ReturnENV. Cette méthode vous demandera d’abord de connecter wshProcEnv à votre environnement de production. Avant cela, vous devez créer un objet wshShell (voir script ci-dessous). Une fois connecté à l'environnement du processus, vous pouvez renvoyer des données telles que NUMBER_OF_PROCESSORS ou PATH pour la configuration de cet ordinateur. Voici quelques exemples de ce que vous pouvez extraire de l’environnement de processus.

Sub ReturnENV() set wshShell = Wscript.CreateObject("WScript.Shell") set wshProcEnv = wshShell.environment("process") WScript.Echo ("NUMBER_OF_PROCESSORS: " & wshProcEnv _ ("NUMBER_OF_PROCESSORS")) WScript.Echo WScript. Echo("PROCESSOR_IDENTIFIER: " & wshProcEnv_("PROCESSOR_IDENTIFIER")) WScript.Echo WScript.Echo("OS: " & wshProcEnv("OS")) WScript.Echo WScript.Echo("CHEMIN: " & wshProcEnv("PATH " )) WScript.Echo WScript.Echo ("WINDIR : " & wshProcEnv ("WINDIR")) WScript.Echo end sub

Veuillez noter que ce script n'est entièrement fonctionnel que dans l'environnement NT (ou W2K). Sous WindowsK9x, seuls PATH et WINDIR seront disponibles.

Essayons de configurer un serveur proxy à titre d'exemple. Vous pouvez obtenir les informations actuelles stockées dans le registre dans HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer à l'aide de la méthode RegRead. Ensuite, à l'aide de RegWrite, nous réécrirons cette valeur avec le nôtre, le nom de certains de vos serveurs proxy, MYPROXY:80. Enfin, assurons-nous que nous avons noté les informations correctes, pour lesquelles nous calculons à nouveau la valeur à l'aide de RegRead.

Sub regProxy prefix = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\" WScript.Echo "Anciens paramètres du serveur proxy : " & wshShell.RegRead(prefix & _ "ProxyServer") wshShell.regWrite préfixe & "ProxyServer", "MYPROXY:80" WScript.Echo " Nouveaux paramètres du serveur proxy : " & wshShell.RegRead(prefix & _ "ProxyServer") end sub

Vous pouvez collecter de nombreuses informations intéressantes en utilisant WMI. La fonction GetIPAddress utilise WMI pour déterminer l'adresse IP d'une machine. Je n'entrerai pas ici dans les détails de WMI, mais fondamentalement, la commande GetObject prend un objet de contrôle WMI. Cet objet contient une méthode ExecQuery qui prend un argument texte décrivant une adresse IP et renvoie un ensemble de toutes les adresses IP de la machine.

GetRAM est très similaire à GetIPAddress sauf que les chaînes demandées sont différentes. Comme dans le cas précédent, ExecQuery s'exécute dans l'objet de service WMI associé. Le listing 4 montre l'implémentation de GetIPAddress et GetRAM.

Liste 4

Fonction GetIPAddress (serveur, nom d'utilisateur, mot de passe) set objLocator = WScript.CreateObject("WbemScripting.SWbemLocator") set objService = objLocator.ConnectServer (server, "", nom d'utilisateur, mot de passe) strQuery = _ "Sélectionnez IPAddress dans Win32_NetworkAdapterConfiguration où IPEnabled=TRUE " définissez objEnumerator = objService.ExecQuery(strQuery) pour chaque obj dans objEnumerator si Not IsNull(obj.IPAddress) puis pour i=LBound(obj.IPAddress) à UBound(obj.IPAddress) GetIPaddress = obj.IPAddress(i) prochaine fin si la fonction suivante se termine, GetRAM (serveur, nom d'utilisateur, mot de passe) set objLocator = WScript.CreateObject("WbemScripting.SWbemLocator") set objService = objLocator.ConnectServer (serveur, nom d'utilisateur, mot de passe) strQuery = "Sélectionnez TotalPhysicalMemory From Win32_LogicalMemoryConfiguration" set objEnumerator = objService.ExecQuery(strQuery) pour chaque obj dans objEnumerator GetRam = obj.totalPhysicalMemory fonction de fin suivante

Pour terminer le script, enregistrez le code dans un fichier logon.wsf (ou ce que vous préférez). Il doit être placé dans \\server\NETLOGON. Il s'agit du répertoire que Windows NT utilisera lors de la recherche de fichiers tels que des scripts de démarrage. Notez que les serveurs non-W2K ne peuvent pas exécuter de fichiers autres que les fichiers de commandes et BAT. Dans ce cas, vous devrez écrire un simple logon.bat qui appelle cscript.exe.

Il pourrait être judicieux de remplacer les deux fonctions WMI du listing 4 par des composants de script Windows.

WSH et interfaces de service Active Directory (ADSI)

Active Directory fonctionne sous Windows 2000. Mais les applications clientes, dans notre cas les scripts, peuvent également être lancées sous Windows 95, Windows 98 ou Windows NT 4.0. Pour tous ces systèmes d'exploitation, il existe des composants clients qui, ainsi que des informations supplémentaires importantes, peuvent être obtenus sur le site WWW MSDN (voir adresse ci-dessus).

Maintenant que vous disposez d'un script de démarrage, reste à comprendre pourquoi vous en avez besoin ? Imaginez devoir créer 5 000 comptes utilisateurs pour votre entreprise, hier, comme d'habitude ! Aucun problème! Nous allons maintenant vous montrer comment créer des groupes d'utilisateurs et des comptes d'utilisateurs Windows NT, et comment ajouter les bons utilisateurs aux bons groupes.

Si vous regardez les noms d'utilisateur et les groupes de votre serveur NT, il est facile de voir qu'il existe plusieurs groupes pré-créés, tels que les administrateurs et les utilisateurs de domaine. Créer votre propre groupe sur un serveur ou un domaine est simple. Il suffit d'indiquer l'ordinateur Windows NT sur lequel vous allez créer le groupe et le nom du groupe. Le code ci-dessous montre un exemple de la fonction CreateGroup qui crée un tel groupe. Pour obtenir une référence à un objet pouvant être utilisé pour gérer Active Directory, utilisez la fonction GetObject. À l'aide de l'objet reçu de GetObject, vous pouvez ajouter un groupe avec le nom dont vous avez besoin et sa description. La ligne de code importante est SetInfo, qui stocke les informations sur le serveur :

Sous CreateGroup (ServerName, GroupName, GroupDesc) en cas d'erreur, reprise suivante err.clear set objServer = GetObject("WinNT://" & ServerName) set objGroup = objServer.Create("group", GroupName) objGroup.Description = GroupDesc ​​​​objGroup. SetInfo si erreur users1.csv. Après cela, tous les attributs de la langue russe ont commencé à s'afficher normalement.

Et encore un point important : exécuter l'applet de commande Nouvel utilisateur ADU Vous devez d'abord importer le module Active Directory pour PowerShell. Ceci est fait par une équipe Module d'importation ActiveDirectory, vous pouvez simplement coller cette ligne dans le script . L'exception est lorsque vous exécutez le script à partir du composant logiciel enfichable spécial Module Active Directory pour Windows PowerShell.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :