Romain Tiennot

Technicien Superieur en Informatique

Aller au contenu | Aller au menu | Aller à la recherche

Keyword - Autoit

Fil des billets

Vérification de nom de poste libre via Active Directory

Autoit Souvent dans les entreprises, il y a un nommage des postes par bâtiments ou encore agence. J'ai souvent eu a chercher dans l'Active Directory un nom de poste disponible afin de préparer un nouveau. Ce script a pour but de verifier dans l'annuaire de l'AD le prochaine ordinateur de libre.

Dans mon exemple, il y a trois site :

  • Site 1
  • Site 2
  • Site 3

Le site 1 à 5 etage :

  • RDC avec nomage "SITE1-000" à "SITE1-099"
  • 1er avec nomage "SITE1-100" à "SITE1-199"
  • 2eme avec nomage "SITE1-200" à "SITE1-299"
  • 3eme avec nomage "SITE1-300" à "SITE1-399"
  • 4eme avec nomage "SITE1-400" à "SITE1-499"

Le site 2 à 4 etage :

  • RDC avec nomage "SITE2-000" à "SITE2-099"
  • 1er avec nomage "SITE2-100" à "SITE2-199"
  • 2eme avec nomage "SITE2-200" à "SITE2-299"
  • 3eme avec nomage "SITE2-300" à "SITE2-399"

Le site 3 à 3 etage :

  • RDC avec nomage "SITE3-000" à "SITE3-099"
  • 1er avec nomage "SITE3-100" à "SITE3-199"
  • 2eme avec nomage "SITE3-200" à "SITE3-299"
  • 3eme avec nomage "SITE3-300" à "SITE3-399"

Par exemple, lorsque l'on aura cliqué sur "Site 3" puis "2eme Etage", il va chercher dans l'active directory si "SITE3-200" est libre. Si c'est le cas, il vous l'affichera et vous pouvez l'utiliser sinon, il incrémentera jusqu’à trouver un poste de libre puis vous l'afficher.

ordinateur_libre1.png Ordinateur_libre2.png Ordinateur_libre3.png

Voici le code :

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=ordi.ico
#AutoIt3Wrapper_UseX64=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Excel.au3>
#include <AD.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <IE.au3>
#include <Excel.au3>
Global $site1, $site2, $site3, $dDisplay, $nbEnd, $quit, $computer, $i, $nbStart, $suffix, $nbhote
GUICreate("Ordinateur de libre", 300, 300, 192, 124)
_AD_Open()
start()
 
func start()
GUICtrlCreateLabel("Veuillez cliquer sur l'un des boutons :", 20, 10, 200, 17)
$site1 = GUICtrlCreateButton("Site 1", 10, 40, 140, 50)
$site2 = GUICtrlCreateButton("Site 2", 150, 40, 140, 50)
$site3 = GUICtrlCreateButton("Site 3", 10, 90, 140, 50)
 
$quit = GUICtrlCreateButton("Quitter", 160,250,120,40)
 
GUISetState(@SW_SHOW)
while 1
	    $nMsg = GUIGetMsg()
    Switch $nMsg
		case $site1
			clear()
			site1()
 
		case $site2
			clear()
			site2()
 
		case $site3
			clear()
			site3()
 
        Case $GUI_EVENT_CLOSE
			_AD_Close()
            Exit
		Case $quit
			_AD_Close()
			Exit
    EndSwitch
WEnd
EndFunc
 
 
func clear()
			Global $dDisplay[4] = [$site1, $site2, $site3, $quit]
			For $i = 0 To UBound($dDisplay) - 1
				GUICtrlDelete($dDisplay[$i])
			Next
EndFunc
 
func site1()
			GUICtrlCreateGroup("Site N°1", 10, 40, 280, 155)
			$site10 = GUICtrlCreateButton("Rez-de-chaussé", 35,60,100,40)
			$site11 = GUICtrlCreateButton("1er Etage", 160,60,100,40)
			$site12 = GUICtrlCreateButton("2eme Etage", 35,105,100,40)
			$site13 = GUICtrlCreateButton("3eme Etage", 160,105,100,40)
			$site14 = GUICtrlCreateButton("4eme Etage", 35,150,100,40)
			$suffix = "SITE1-"
			$nbhote = "3"
 
			$retour = GUICtrlCreateButton("Retour", 20,250,120,40)
			$quit = GUICtrlCreateButton("Quitter", 160,250,120,40)
				while 1
					$nMsg = GUIGetMsg()
						Switch $nMsg
							case $site10
								$nbStart = "000"
								$nbEnd = "099"
					 			verif()
 
							case $site11
								$nbStart = "100"
								$nbEnd = "199"
					 			verif()
 
							case $site12
								$nbStart = "200"
								$nbEnd = "299"
					 			verif()
 
							case $site13
								$nbStart = "300"
								$nbEnd = "399"
					 			verif()
 
							case $site14
								$nbStart = "400"
								$nbEnd = "499"
					 			verif()
 
							Case $GUI_EVENT_CLOSE
								_AD_Close()
								Exit
 
							Case $quit
								_AD_Close()
								Exit
 
							Case $retour
								GUICtrlDelete($site14)
								GUICtrlDelete($site13)
								GUICtrlDelete($site12)
								GUICtrlDelete($site11)
								GUICtrlDelete($site10)
								GUICtrlDelete($retour)
								clear()
								start()
 
							EndSwitch
				WEnd
EndFunc
 
func site2()
			GUICtrlCreateGroup("Site N°2", 10, 40, 280, 120)
			$site20 = GUICtrlCreateButton("Rez-de-chaussé", 35,60,100,40)
			$site21 = GUICtrlCreateButton("1er Etage", 160,60,100,40)
			$site22 = GUICtrlCreateButton("2eme Etage", 35,105,100,40)
			$site23 = GUICtrlCreateButton("3eme Etage", 160,105,100,40)
 
			$suffix = "site2-"
			$nbhote = "3"
 
			$retour = GUICtrlCreateButton("Retour", 20,250,120,40)
			$quit = GUICtrlCreateButton("Quitter", 160,250,120,40)
				while 1
					$nMsg = GUIGetMsg()
						Switch $nMsg
							case $site20
								$nbStart = "000"
								$nbEnd = "099"
					 			verif()
 
							case $site21
								$nbStart = "100"
								$nbEnd = "199"
					 			verif()
 
							case $site22
								$nbStart = "200"
								$nbEnd = "299"
					 			verif()
 
							case $site23
								$nbStart = "300"
								$nbEnd = "399"
					 			verif()
 
 
							Case $GUI_EVENT_CLOSE
								_AD_Close()
								Exit
 
							Case $quit
								_AD_Close()
								Exit
 
							Case $retour
								GUICtrlDelete($site23)
								GUICtrlDelete($site22)
								GUICtrlDelete($site21)
								GUICtrlDelete($site20)
								GUICtrlDelete($retour)
								clear()
								start()
 
 
							EndSwitch
				WEnd
EndFunc
 
func site3()
			GUICtrlCreateGroup("Site N°3", 10, 40, 280, 110)
			$site30 = GUICtrlCreateButton("Rez-de-chaussé", 35,60,100,40)
			$site31 = GUICtrlCreateButton("1er Etage", 160,60,100,40)
			$site32 = GUICtrlCreateButton("2eme Etage", 35,105,100,40)
 
			$suffix = "site3-"
			$nbhote = "3"
 
			$retour = GUICtrlCreateButton("Retour", 20,250,120,40)
			$quit = GUICtrlCreateButton("Quitter", 160,250,120,40)
				while 1
					$nMsg = GUIGetMsg()
						Switch $nMsg
							case $site30
								$nbStart = "000"
								$nbEnd = "099"
					 			verif()
 
							case $site31
								$nbStart = "100"
								$nbEnd = "199"
					 			verif()
 
							case $site32
								$nbStart = "200"
								$nbEnd = "299"
					 			verif()
 
 
							Case $GUI_EVENT_CLOSE
								_AD_Close()
								Exit
 
							Case $quit
								_AD_Close()
								Exit
 
							Case $retour
								GUICtrlDelete($site32)
								GUICtrlDelete($site31)
								GUICtrlDelete($site30)
								GUICtrlDelete($retour)
								clear()
								start()
 
 
							EndSwitch
				WEnd
EndFunc
 
func verif()
for $i = $nbStart -1  to $nbEnd - 1 step 1
	$computer = $i + 1
	if NOT _AD_ObjectExists(_AD_GetObjectAttribute($suffix&StringRight("00"&$computer,$nbhote) & "$", "sAMAccountName"))Then
		MsgBox(0,"",$suffix&StringRight("00"&$computer,$nbhote))
		ExitLoop
	EndIf
Next
EndFunc

A bientôt,
Romain

Console - Activation/Désactivation Bureau à Distance distant

Autoit J'ai conçu un script permettant d'activer ou non le bureau à distance sur un poste distant. Il faut être administrateur du domaine pour l'utiliser. Il suffit d'indiquer le nom du poste en question et de faire son choix en l'activant ou non. Bureau_a_distance_2.png

Bureau_a_distance.png

Vous pouvez retrouver le script en Annexe.

A bientôt, Romain

Modification Fichier Host via un fichier Excel

Autoit

J'ai concu un script permetant de modifier le fichier Host de plusieurs Ordinateurs. Le fichier Host sur trouve dans le répertoire suivant :

C:\Windows\System32\drivers\etc


Le fichier Host permet de rediriger une URL vers une IP. Dans mon exemple, je redirige "google.fr" vers une IP d'un serveur OVH. Pratique pour basculer quelques utilisateurs à leur insut vers un serveur Web en test.

Vous trouverez en pièce jointe le script compilé et voici le code source :

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=favicon256.ico
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Excel.au3>
#include <GuiConstants.au3>
#include <GuiIPAddress.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
HotKeySet("{ENTER}", "_btnSubmit")
 
 
$fichier = @ScriptDir & "\host.xls"
If FileExists($fichier) <> 1 Then
	msgbox(64,"ERREUR","Le fichier host.xls n'est pas présent dans "&@ScriptDir)	; Si le fichier n'existe pas, ERREUR
	Exit
EndIf
 
ProcessClose("Excel.exe")
_ExcelBookOpen($fichier)
$oExcel = ObjGet("","Excel.Application")
$oExcel.SheetsInNewWorkbook = 1
$oExcel.Visible = 0
$nbnom = 0
$nbpc = 0
 
 
 
while ($oExcel.Activesheet.Cells(2+$nbnom,1).Value)
 $nbnom = 1+$nbnom
WEnd
 
while ($oExcel.Activesheet.Cells(2+$nbpc,2).Value)
 $nbpc = 1+$nbpc
WEnd
 
 
if $nbnom <> $nbpc Then
	msgbox(0,"Erreur",'Un champ dans colonne "Utilisateur" ou colonne "PC" n'&"'"&'est pas saisie')
	Exit
elseif $nbnom = 0 or $nbpc = 0 Then
	msgbox(0,"Erreur","Aucun champs a été renseigné dans la collone Utilisateur ou PC")
	Exit
EndIf
 
    $Ipgui=GUICreate("IP", 249, 152)
	GUICtrlCreateLabel("Veuillez cliquer sur l'un des boutons :", 10, 10, 200, 17)
    $hIpgui = _GUICtrlIpAddress_Create($Ipgui, 25, 90, 200)
	$quit = GUICtrlCreateButton("Quitter", 140,120,80,25)
	$ok = GUICtrlCreateButton("OK", 35,120,80,25)
	GUISetState(@SW_SHOW)
while 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
		Case $quit
           Exit 
	   Case $ok
		   $IP = _GUICtrlIpAddress_Get($hIPgui)
		   guidelete("IP")
		   ExitLoop
		Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
wend
 
 
 
    GUICreate("Nom", 249, 152)
	GUICtrlCreateLabel("Veuillez cliquer sur l'un des boutons :", 10, 10, 200, 17)
    $Namegui = GUICtrlCreateInput("", 25, 90)
	$quit = GUICtrlCreateButton("Quitter", 140,120,80,25)
	$ok = GUICtrlCreateButton("OK", 35,120,80,25)
	GUISetState(@SW_SHOW)
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
		Case $quit
           Exit 
		Case $ok
			$dns = GUICtrlRead($Namegui)
			guidelete("Nom")
			ExitLoop
		Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
Wend
 
$response = MsgBox(4, "Modification Host", "Etes-vous sur de vouloir modifier le fichier Host ?")
If $response = 7 then
	Exit
EndIf
 
For $i = 1 To $nbnom Step 1					
$pc = $oExcel.Activesheet.Cells(1 + $i, 2).Value			
$file = FileOpen("\\"&$pc&"\c$\WINDOWS\system32\drivers\etc\hosts", 1)
 
If $file = -1 Then
	MsgBox(0, "Error", "Impossible d'accèder au fichier host de "&$pc&".")
EndIf
 
FileWrite($file, @CRLF&$ip&@TAB&$dns)
FileClose($file)
 
Next																					; Part au debut de la boucle
ProcessClose("Excel.exe")
MsgBox(0,"Terminé","Les modifications sont terminées")
 
Func _btnSubmit()
    $nMsg = $ok
EndFunc

Je vous laisse regarder la vidéo :)

A bientôt