Script création compte admin local

Script création compte admin local - Poste de travail - Systèmes & Réseaux Pro

Marsh Posté le 25-11-2014 à 15:59:06    


 
Bonjour à tous,
 
 
 
Je cherche à limiter l'utilisation de compte admin sur notre domain, et de créer un compte ADMIN en local avec un mot de passe différent par machine.
J'ai regardé du côté des GPO, je peux effectivement créer un compte et le mettre admin local, mais ça sera le même mot de passe pour tout le monde.
 
 
Donc je me suis penché sur le script VBS avec utilisation d'une feuille Excel pour chercher les données. Problème, j'ai l'idée de l'algo et du concept, mais j'arrive pas à le faire :/
 
 
J'imagine dans ma feuille Excel avec en gros 4 colonnes :
 
 
Colonne 1 : Nom de l'ordinateur
Colonne 2 : nom du compte à créer
Colonne 3 : Mot de passe du compte
Colonne 4 : Groupe de l'utilisateur
 
J'aimerai donc que quand mon script se lance, il parte lire le nom de la machine, et complete des variables avec la feuille Excel par rapport au nom donc.
Avez-vous une idée ? Je trouve beaucoup d'info pour une création de compte sur l'AD, mais rien en local sur une machine.
 
 
Si vous avez des infos je suis preneur, en vous remerciant par avance :)
 
 
Amicalement,
Mickael

Reply

Marsh Posté le 25-11-2014 à 15:59:06   

Reply

Marsh Posté le 25-11-2014 à 16:04:31    

Reply

Marsh Posté le 25-11-2014 à 17:16:55    


Merci beaucoup Je@nb pour ton retour très rapide, je vais regarder un peu tout ça.
 
La je regarde du côté du VBS, et surtout l'utilisateur des feuilles Excel pour récupérer des informations.

Reply

Marsh Posté le 25-11-2014 à 17:36:38    

Si tu veux continuer dans ta voie de fichier excel, fais du powershell et convertis ton fichier Excel en CSV. C'est 2 lignes pour récup ton user/mdp

 
Code :
  1. $csvfile = "C:\users\jb\Documents\WindowsPowerShell\Scripts\HFR\complist.csv"
  2. $infos = Import-Csv $csvfile -Delimiter ";" |? { $_.ComputerName -eq $env:COMPUTERNAME }
  3. if ($infos -ne $null) {
  4.     $cn = [ADSI]"WinNT://$env:COMPUTERNAME"
  5.     $user = $cn.Create("User",$infos.UserName)
  6.     $user.SetPassword($infos.Password)
  7.     $user.setinfo()
  8.     $user.UserFlags[0] = $User.UserFlags[0] -bor 0x10000
  9.     $user.setinfo()
  10.     $group= [ADSI]"WinNT://$env:COMPUTERNAME/Administrators"
  11.     $group.Add("WinNT://$env:COMPUTERNAME/$($infos.Username)" )
  12. }
 


ComputerName;UserName;Password
WIN8-JB;adminjb;P@ssw0rd
WIN10-VM;admin10jb;Pa$$w0rd



Message édité par Je@nb le 25-11-2014 à 17:36:55
Reply

Marsh Posté le 26-11-2014 à 09:53:45    


Effectivement en PowerShell il y a aussi d'autre solution, la j'avais regardé sur le VBS car j'ai déjà un script de connexion users en VBS.
 
Il me manque uniquement la partie recherche dans une feuille Excel pour récupérer les infos et les mettre dans des variables.

Reply

Marsh Posté le 26-11-2014 à 10:02:11    

Si tu exportes en CSV ça te génère le 2ème partie de mon poste. Et c'est lu à la 2ème ligne de mon script via le import-csv

Reply

Marsh Posté le 28-11-2014 à 10:25:31    


Du coup nous avons réussi en VBS, encore merci à toi Je@nb :)

Reply

Marsh Posté le 28-11-2014 à 16:13:25    

Micko77666 a écrit :


Du coup nous avons réussi en VBS, encore merci à toi Je@nb :)


Bonjour,
 
Pourrais-tu poster ton script? Cela pourrait servir à d'autres


---------------
« Mais j'vous jure, y'a dix minutes, ça marchait très bien... »  
Reply

Marsh Posté le 01-12-2014 à 09:50:16    

Pas de soucis le voici, il y a surement mieux, mais il fonctionne en tout cas :)
 
Par  contre, il faut élever les droits sinon pas de création de users.
 
 

Code :
  1. Dim WshNet, computername
  2. Set WshNet = CreateObject("Wscript.Network" )
  3. computername = WshNet.ComputerName
  4. Dim result, objUser
  5. Dim info_users(1000,4)
  6. Dim i
  7. Dim ligne
  8. Dim temp_tab(4)
  9. Dim nom, compte, password, groupe
  10. '************************************************
  11. Set WshShell = CreateObject("WScript.Shell" )
  12. 'excel *********
  13. Set objExcel = CreateObject("Excel.Application" )
  14. objExcel.Visible = false
  15. Set objWorkbook = objExcel.Workbooks.Open("\\ordi\Comptes.xls" )
  16. Set objWorksheet = objWorkbook.Worksheets(1)
  17. 'création du pointeur i, de la localisation de la ligne, et d'un tableau temporaire pour la fonction filter
  18. 'on parcourt le tableau
  19. for i=1 to 1000
  20. temp_tab(1) = objWorksheet.cells(i,1).value
  21. temp_tab(2) = objWorksheet.cells(i,2).value
  22. temp_tab(3) = objWorksheet.cells(i,3).value
  23. 'on recherche "computername" dans le tableau à une dimension, result contient le computername
  24. result = filter(temp_tab, computername, 1)
  25. info_users(i,1)    = temp_tab(1)
  26. info_users(i,2)    = temp_tab(2)
  27. info_users(i,3)   = temp_tab(3)
  28. 'on cherche si la fonction filter a retourné un resultat, si oui, ces instructions sont effectuées
  29. for each x in result
  30.  ligne = Cstr(i)
  31. next
  32. next
  33. 'Fermeture de l'application Excel
  34. objWorkBook.Close
  35. 'Désallocation mémoire
  36. Set objWorksheet = Nothing
  37. Set objWorkbook = Nothing
  38. Set objExcel = Nothing
  39. '**************************************************
  40. 'création users
  41. if Not IsNull(ligne) then
  42. nom = info_users(ligne,1)
  43. compte = info_users(ligne,2)
  44. password = info_users(ligne,3)
  45. groupe = info_users(ligne,4)
  46. Set colAccounts = GetObject("WinNT://"&nom&"" )
  47. 'test existence de l'utilisateur
  48. on error resume next
  49. set ouser=getobject("WinNT://"& nom &"/"&compte& ",user" )
  50. if err.number<>0 then
  51.  'wscript.echo "Ce compte n'existe pas encore, nous allons le créer."
  52.  err.clear
  53.  Set objUser = colAccounts.Create("user", compte)
  54.  Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
  55.  objPasswordExpirationFlag = ADS_UF_DONT_EXPIRE_PASSWD
  56.  'test de création mot de passe
  57.  on error resume next
  58.  objUser.SetPassword "@"& password
  59.  if err.number<>0 then
  60.   'wscript.echo "Création du mot de passe."
  61.  end if
  62.  on error goto 0
  63.  objUser.SetInfo
  64.  objUser.Put "userFlags", objPasswordExpirationFlag
  65.  'wscript.echo "Utilisateur "+nom+" créé. Tentative d'affectation au groupe..."
  66.  'test d'ajout à un groupe
  67.  on error resume next
  68.  Set Group = GetObject("WinNT://" + Cstr(nom) + "/Administrateurs,group" )
  69.  if err.number=0 then
  70.   'wscript.echo "Le compte "+compte+" a ete ajoute au groupe "+groupe
  71.   Group.Add(objUser.ADspath)
  72.   Group.SetInfo
  73.  end if
  74.  on error goto 0
  75. else
  76. 'si l'user existe déjà
  77.  On Error Resume Next
  78.  objUser.SetPassword "@"& password
  79.  if err.number <>0 then
  80.   objUser.Put "userFlags", objPasswordExpirationFlag
  81.   'wscript.echo "Mot de passe redefini."
  82.   objUser.SetInfo
  83.  end if
  84.  on error goto 0
  85.  on error resume next
  86.  Set Group = GetObject("WinNT://" + Cstr(nom) + "/Administrateurs,group" )
  87.  if err.number = 0 then
  88.   Group.Add(objUser.ADspath)
  89.   Group.SetInfo
  90.  end if
  91.  on error goto 0
  92. end if
  93. on error goto 0
  94. end if
  95. wscript.echo "End."

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed