Bonjour...
Je remonte ce topic, après qqes semaines, car j'ai pu résoudre mon pb.
Après diverses recherches, je suis tombé sur diverses solutions (sysprep notamment, bien trop complexe pour mes besoins, et à priori selon certains "pros" pas très optimales), et justement la solution "newsid" de sysinternals.
Mixé avec un script wsh et qqes exemples du site de jc bellamy, je vous livre ici le code, pas très complexe :
Code :
- Dim AdrIp
- Dim Network
- Dim Shell
- Dim Message
- Dim Computer
- Dim HostName
- HostName = "Poste"
- BaseName = "Domain_"
- Set Network = Wscript.CreateObject("WScript.Network" )
- Set Shell = Wscript.CreateObject("WScript.Shell" )
- wscript.echo "::: Traitement post-Ghost :::" & VBCRLF
- computer = Network.ComputerName
- 'Computer = "localhost"
- wscript.echo "(1/7) Récupération de l'adresse IP" & VBCRLF
- on error resume next
- set IPConfigSet = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer).ExecQuery _
- ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE" )
- for each IPConfig in IPConfigSet
- AdrIp=IPConfig.IPAddress(0)
- 'wscript.echo " " & IPConfig.Description
- wscript.echo " adresse MAC : " & IPConfig.MACAddress
- wscript.echo " adresse IP : " & AdrIp
- 'wscript.echo " passerelle : " & IPConfig.DefaultIPGateway
- 'wscript.echo " masque : " & IPConfig.IPSubnet
- 'wscript.echo " DNSHostName : " & IPConfig.DNSHostName
- 'wscript.echo " serveur DNS : " & IPConfig.DNSServerSearchOrder(min)
- next
- wscript.echo VBCRLF
- wscript.echo "(2/7) Création d'un nouveau nom à partir de l'adresse IP" & VBCRLF
- HostName = HostName & Right(AdrIp, Len(AdrIp) - InStrRev(AdrIp, "." ))
- wscript.echo " nouveau nom d'hôte : " & HostName
- wscript.echo VBCRLF
- wscript.echo "(3/7) Modification du nom de machine affiché dans l'écran de veille" & VBCRLF
- shell.Run "reg add HKCU\Software\Microsoft\Screensavers\Text3D /v DisplayString /d " & BaseName & HostName & " /f", 0
- wscript.echo VBCRLF
- wscript.echo "(4/7) Création d'un nouvel SID aléatoire" & VBCRLF
- wscript.echo "(5/7) Modification du SID" & VBCRLF
- wscript.echo "(6/7) Modification du nom de machine" & VBCRLF
- shell.Run "newsid /a /d 10 " & HostName, 1, true
- wscript.echo VBCRLF
- wscript.echo "(7/7) Redémarrage" & VBCRLF
- wscript.echo VBCRLF
|
En résumé : ce script récupère l'@ IP affectée par DHCP, et l'utilise pour créer un nouveau nom de machine (PosteXX). Accessoirement, je l'utilise aussi pour modifier le texte de l'écran de veille (Domain_PosteXX).
Le script peut être amélioré, avec notamment un test primaire global entre l'IP et le nom actuel de la machine afin de faire ou pas les modifs (tjs dans l'idée de l'intégrer à un script d'ouverture de session machine). Il faut quand même éviter de modifier le SID de la machine trop de fois (d'après sysinternals, le changement de SID laisse d'anciennes clefs dans le registre).
NB: Je ne suis pas sur que le script fonctionne si la machine possède plusieurs @s IP...
A lancer dans un .bat avec la commande
Code :
- cscript hostname.vbs
|
afin d'éviter l'affichage des boites de dialogue lorsqu'exécuté avec un wscript (comportement par défaut sous win, mais modifiable, voir le site de jc bellamy)
m3z : DNS fixe les noms ? ... va falloir réviser un peu plus sérieusement
ShonGail : Ta remarque était très juste, car j'avais justement testé mon précédent script dans mon domaine en observant qu'effectivement ça ne marchait à cause de ce côté "intégration au AD"
Sinon j'avais finalement très peu de machines (<15) mais je trouvais sympa de me confronter au pb et d'essayer de trouver une solution pertinente plutôt que de faire le gros boeuf passif qui répète la même opération bêtement.
Message édité par trevor le 02-07-2007 à 11:33:57
---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net