Header image
Jean-René DANIS

 

   Retour à Script d'administration et de connexion                

  


Script lancer une commande ou un script en fonction
du numéro de série de l'odinateur

 

Voici un script qui permet de lancer une fonction ou un script en fonction du numéro de série de l'ordinateur.

Cela peut-être utiliser dans un domaine pour séléctionner le ou les ordinateurs sur lesquel la fonction doit être executée.

Exemple : Installation d'ActivSync 4.5 à voir ici : liste des scripts d'installation silencieuse.

Principe

Mettre les 3 fichiers suivants dans le même dossier :

Install-en-fonction-serial-number.kix : décrit ci-dessous
elligible.txt: décrit ci-dessous : contient la liste des numéros de série des ordinateurs sur lesquel ActivSync sera installé.
WMIQuery.udf : fonction Kixtart pour récuperer le numéro de série de l'ordinateur.

Pour l'executer lancer la commande "kix32.exe Install-en-fonction-serial-number.kix"

Détail des scripts

Contenu du script Install-en-fonction-serial-number.kix disponnible en PDF couleur ici.

;lancement d'une fonction ou d'un script en fonction du numéro de serie de l'ordinateur
;la liste des numéro de série doit se trouver dans le fichier elligible.txt
;JEAN-RENE DANIS 16/11/08

;Liste des variable(s)
;variable qui définit l'emplacement du fichier log
$DossierDeLog = "%systemdrive%\install\log\"
;variable qui définit le nom et l'emplacement du fichier qui contient les numéros de série
$listeOrdinateursElligibles = "elligible.txt"

;Création du dossier pour mettre le fichier log si ce dossier n'existe pas
IF NOT EXIST ($DossierDeLog)
MD $DossierDeLog
ENDIF

;Ouverture du fichier log et redirection des messages
IF RedirectOutput($DossierDeLog + @SCRIPTNAME + ".txt") = 0
?? "Ouverture de " + @SCRIPTNAME + " à " + @TIME
ELSE
? "Impossible de créer le fichier log"
GOTO "finerreur"
ENDIF

;Chargement d'une fonction : WMIQuery
;Ce script charge une fonction sauf si elle a déjà été chargée.
;Verifier que le nom de la fonction à chargée est bien présent dans
;le nom de la variable $exist...des 2ieme et 7ieme lignes ci-dessou
$emplacementfonction = "WMIQuery.udf"
IF $existWMIQuery = "exist"
? "La fonction " + $emplacementfonction + " a déjà été chargée"
ELSE
IF EXIST ($emplacementfonction)
CALL $emplacementfonction
$existWMIQuery = "exist"
? "La fonction " + $emplacementfonction + " a été chargée"
ELSE
? "La fonction " + $emplacementfonction + " n'a pas été trouvée"
ENDIF
ENDIF

cd @SCRIPTDIR\

;Verifie que le systeme d'exploitation est bien Windows XP
$TableauDeValeur = @PRODUCTTYPE,''
$ResultatRecherche = ASCAN($TableauDeValeur, 'Windows XP', , , 1)
; Retourne -1 si "Windows XP" n'exite pas dans @PRODUCTTYPE
IF $ResultatRecherche = -1
? "la chaine de caractère 'Windows XP' n'extiste pas dans la '@PRODUCTTYPE' "
GOTO "finerreur"
ENDIF

;verifie que le numéro de série de l'ordinateur fait parti de la liste elligible.txt
$ServiceTag = WMIQuery("SerialNumber","Win32_SystemEnclosure")[0]
? "Le numéro de série de l'ordnateur est : [$ServiceTag]"
? "Parcours de la liste des ordinateurs elligibles"
$scrresult = 0
IF Open(3, $listeOrdinateursElligibles) = 0
$x = ReadLine(3)
;parcours des lignes
WHILE @ERROR = 0
; compare la ligne avec le serial number du PC
if INSTR ($x, $ServiceTag)
$scrresult = 1
endif
$x = ReadLine(3)
LOOP
Close (3)
ELSE
? "Impossible d'ouvrir le fichier, code d'erreur : [" + @ERROR + "]"
GOTO "finerreur"
ENDIF
;affiche le résultat de la recherche
IF $scrresult = 1
?"L'ordinateur fait parti de la liste, l'installation peut commencer."
ELSE
?"L'ordinateur ne fait pas parti de la liste."
GOTO "finerreur"
ENDIF

;Lancement des fonctions ou du script ___________________________
;
;
;mettre ici les lignes de code à éxecuter sur le(s) ordinateur(s)
;
;
;_______________________________________________________

;label de fin avec erreurs
:finerreur
? "fin du script d'installation : erreur"
;Ouverture du fichier log pour signaler la présence d'erreurs
IF RedirectOutput($DossierDeLog + "ERREUR_" + @SCRIPTNAME +".txt") = 0
?? "Ouverture de erreur_" + @SCRIPTNAME + " à " + @TIME
? "le script d'installation à rencontrer des erreurs : consulter le fichier log :"
? $DossierDeLog + @SCRIPTNAME +".txt"
ENDIF
sleep 5

;label de fin sans erreurs
:fin
? "fin du script d'installation"

;annule la redirection vers un fichier
RedirectOutput("")


Contenu du elligible.txt

___________L820
JKGXQ2J
BW28Q2J
1LGXQ2J
CWF8Y2J
F4NQT2J
8W28Q2J

___________L830
692NK3J
792NK3J
BS6973J
9ZJN43J
8DL973J


 

 

Vous pouvez poster vos commentaires sur mon blog : http://installation-silencieuse.blogspot.com