|..] Script configuration des clefs de registre pour clients WSUS

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Aleas
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 05 févr. 2020 17:16
Status : Hors ligne

|..] Script configuration des clefs de registre pour clients WSUS

#1

Message par Aleas »

Bonjour,

Suite à la mise en place d'n serveur WSUS j'aimerai automatiser la configuration des clients.

L'architecture est la suivante :

Un serveur maitre
-11 serveurs relai sur chaque sites qui deservent entre 50 et 400 clients chacuns.

Script
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=C:\Program Files (x86)\AutoIt3\Aut2Exe\Icons\AutoIt_Main_v10_48x48_256.ico
#AutoIt3Wrapper_Outfile=..\wsus.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

$WSUSServerURL = "adresse_du_serveur"
Global $WindowsUpdateKey = "HKLM:\SOFTWARE\Policies\Microsoft\windows\WindowsUpdate"
Global $TergetGroup = "nom_du_groupe"



$Reg_WUServer = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\windows\WindowsUpdate","WUServer")
$Reg_WUStatusServer = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\windows\WindowsUpdate","WUStatusServer")
$Reg_TargetGroup = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\windows\WindowsUpdate","TargetGroup")

RegWrite("HKLM:\SOFTWARE\Policies\Microsoft\windows\WindowsUpdate","WUServer","REG_SZ","$WSUSServerURL")
RegWrite("HKLM:\SOFTWARE\Policies\Microsoft\windows\WindowsUpdate","WUStatusServer","REG_SZ","$WSUSServerURL")
RegWrite("HKLM:\SOFTWARE\Policies\Microsoft\windows\WindowsUpdate","TargetGroup","REG_SZ","$TergetGroup")

Pour l'instant c'est une ébauche car mes connaissance en AutoIt sont limités, c'est mon premier script.
A terme j'aimerai que le scrip vérifie les clef
-Si elles sont bonne qu'il ne fasse aucune modif
-Sinon quil les modifies en attribuant les variables $TergetGroup et $WSUSServerURL

Afin de de répartir les clients dans les bons groupes il faudrait qu'il detecte l'os (soit win7 soit win10) et dans l'idéal une boucle pourrait detecter le réseau dans lequel le script est exécuté afin d'attribuer la bonne adresse à $WSUSServerURL.

En espérant que mon poste est bien claire je vous remercie par avance de prendre le temps de me répondre.

Bonne soirée
Aleas
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 05 févr. 2020 17:16
Status : Hors ligne

Re: |..] Script configuration des clefs de registre pour clients WSUS

#2

Message par Aleas »

Update:

Voicie ma nouvelle version du script, le regwrite fonctionne bien cependant il me faut maintenant pouvoir executer le script en tant qu'admin mais l RunAs n'est pas fonctionnel.
Suite à des test la script reconnait bien si il est exécuté en tant qu'admin mais si ce n'est pas le cas il ne fait pas d'élévation de privilège.

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=C:\Program Files (x86)\AutoIt3\Aut2Exe\Icons\AutoIt_Main_v10_48x48_256.ico
#AutoIt3Wrapper_Outfile=..\wsus.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
$WSUSServerURL = "url"
Global $WindowsUpdateKey = "HKLM:\SOFTWARE\Policies\Microsoft\windows\WindowsUpdate"
Global $TergetGroup = "group"

$strAdminNom = "username"
$strAdminPasswd = "mdp"
$strCommande = "test.exe"

If IsAdmin() Then
   MsgBox(0,"Attention","11")
      $Reg_WUServer = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\windows\WindowsUpdate","WUServer")
      if ($Reg_WUServer <> $WSUSServerURL) Then
         RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\windows\WindowsUpdate","WUServer","REG_SZ",$WSUSServerURL)
         MsgBox(1,"titi","ok1")
      EndIf
Else
    MsgBox(0, "OK", "00")
   RunAs($strAdminNom, @ComputerName, $strAdminPasswd, 0, $strCommande, @ScriptDir)

      $Reg_WUServer = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\windows\WindowsUpdate","WUServer")
      if ($Reg_WUServer <> $WSUSServerURL) Then
         RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\windows\WindowsUpdate","WUServer","REG_SZ",$WSUSServerURL)
         MsgBox(1,"titi","ok2")
      EndIf

   $Reg_WUStatusServer = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\windows\WindowsUpdate","WUStatusServer")
   $Reg_TargetGroup = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\windows\WindowsUpdate","TargetGroup")
   #MsgBox(1,"titi",$Reg_WUServer)
   #MsgBox(1,"titi",$Reg_WUStatusServer)
   #MsgBox(1,"titi",$Reg_TargetGroup)



Exit
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: |..] Script configuration des clefs de registre pour clients WSUS

#3

Message par Tlem »

Bonjour.
Essayez #RequireAdmin en début de script.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Aleas
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 05 févr. 2020 17:16
Status : Hors ligne

Re: |..] Script configuration des clefs de registre pour clients WSUS

#4

Message par Aleas »

Après plusieurs essaies je n'ai toujours pas réussit à obtenir le résultat souhaité.
Je repars donc d'une base plus simple, je souhaite:
- automatiser la connection en tant qu'administrateur afin d'exécuter le script avec une élévation des droits (RunAsWait)
- détécter l'OS
- éxecuter un fichier .reg
- activer la fonctionalité windowsupdate

Je n'arrive pas à exécuter le fichier registre.

Merci pour vos réponses.

;Variables:
$exreg = @WindowsDir & "\regedit.exe /s " & @ScriptDir & "\update_w10.reg"
$OS = @OSVersion
$ip1=@IPAddress1
$User = "useradmin"
$cmd = "net user "&$admin &" "&$Password
$domaine ="nomdomaine"

;Connexion compte admin:
Func _RunAsAdmin($cmd)
   Local $iCheck = "True"
   RunAs($admin, @ComputerName, $Password, 0, @ComSpec & " /c  echo test du mot de passe...", @TempDir,@SW_HIDE)
   If @error Then $iCheck = "False"
   If $iCheck = "False" Then RunAs($admin , @ComputerName, $Password, 0, $cmd)
EndFunc

_RunAsAdmin($cmd)


;Test de l'os et selection du .reg
MsgBox(0, "OS", @OSVersion)
if ( $OS = "WIN_10") Then
   $exreg = @WindowsDir & "\regedit.exe /s " & @ScriptDir & "\update_w10.reg"
   RunWait("regedit.exe /s" & @ScriptDir & "\update_w10.reg", "", @SW_HIDE)
EndIf

if ( $OS = "WIN_7") Then
   $exreg = @WindowsDir & "\regedit.exe /s " & @ScriptDir & "\update_w7.reg"
   RunWait("regedit.exe /s" & @ScriptDir & "\update_w7.reg", "", @SW_HIDE)
EndIf

RunAsWait ($admin, $domaine, $Password, 0, $exreg)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: |..] Script configuration des clefs de registre pour clients WSUS

#5

Message par jguinch »

Tu peux essayer de mettre _WinAPI_Wow64EnableWow64FsRedirection(false) en début de script (mettre l'include qui va avec)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Aleas
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 05 févr. 2020 17:16
Status : Hors ligne

Re: |..] Script configuration des clefs de registre pour clients WSUS

#6

Message par Aleas »

Je pense être au bout, seulement lorsque j'éxecute le fichier .reg comportant les clef à modifier la boite de connexion apparait et il faudrait que je parvienne à me connecter automatiquement.
J'ai tenté un runas mais rien n'y fait.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: |..] Script configuration des clefs de registre pour clients WSUS

#7

Message par Tlem »

Étant donné que votre script doit avoir les droits admin pour effectuer les opérations qu'il doit faire, lancez le avec l'option que je vous ai indiqué précédemment, comme cela la fonction RunAsAdmin() sera inutile. ^^
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre