Search  
Friday, July 25, 2008 ..:: Home ::.. Register  Login
 Bienvenue

    

 Comment créer et configurer automatiquement un client RIS ? La solution netbootGUID !
Location: BlogsSir's BlogDeveloppement    
Posted by: sir 9/30/2005 2:43 PM
Cette semaine, un de mes collègues (William Scriven) m'a demandé s'il était possible d'automatiser la création des comptes ordinateurs dans un active-directory Windows 2003 en vue du déploiement de ces ordinateurs par le service d'installation distante (RIS). Voici donc une petit solution écrite en Vb.net ...

Par défaut, n'importe quel ordinateur doté des fonctionnalités PXE peut être installé par le service RIS. Il est cependant parfois nécessaire de limiter cette installation à un groupe d'ordinateur. Pour ce faire, les ordinateurs doivent être créés dans l'active directory en leur assignant leur netbootguid (UUID). Le fait d'assigner cette propriété fait apparaître l'onglet "Remote Install" dans les propriétés de l'ordinateur dans la mmc Active Directory.

La première partie de la solution consiste donc à récupérer le netbootguid du pc devant être installé par RIS. Pour ce faire j'utilise les API WMI (Windows Management instrumentation).

Imports System.Management

Dim NetBootGuid As String
Dim wmiObj As New ManagementObjectSearcher("SELECT UUID FROM Win32_ComputerSystemProduct")
Dim objMgmt As ManagementObject
For Each objMgmt In wmiObj.Get
NetBootGuid = objMgmt("UUID").ToString()
Next

La deuxième partie consiste à créer l'ordinateur dans l'active directory. Pour ce faire, j'utilise les API du namespace DirectoryServices.

Imports System.DirectoryServices

' Ldapcontainer = LDAP://OU=VotreOU Ris,DC=VotreDomainName,DC=VotreDomainSufixe

Dim Ldap As DirectoryEntry = New DirectoryEntry(LdapContainer)
Dim LdapComputer As DirectoryEntry = Ldap.Children.Add(String.Format("cn={0}", ComputerName.ToUpper), "computer")
LdapComputer.Properties("SAMAccountName").Value = ComputerName.ToUpper
LdapComputer.Properties("dNSHostName").Value =
String.Format("{0}.{1}", ComputerName.ToLower, DomainName.ToLower)
'4096 active l'ordinateur créé
LdapComputer.Properties("userAccountControl").Value = 4096
LdapComputer.Properties("netbootGUID").Value =
New Guid(ComputerNetBootGuid).ToByteArray()
LdapComputer.CommitChanges()

Il est possible d'améliorer cette rountine en collectant le nom des ordinateurs et leur netbootguid dans un fichier CSV. Bon amusement ...

".net ment vôtre", Régis

Permalink |  Trackback

Title:
Comment:
Add Comment   Cancel 

  

 Blog Archive

  

Copyright 2005 by Régis Scyeur   Terms Of Use  Privacy Statement