Créer GPO qui affiche message

Créer GPO qui affiche message - VB/VBA/VBS - Programmation

Marsh Posté le 19-05-2011 à 09:59:23    

Bonjour :)
 
Débutant en scripting, j'ai besoin de votre aide pour la création d'une GPO.
Son but : Afficher un message à l'utilisateur après qu'il se soit loggué. Avec un bouton "J'accepte" et un "Je refuse".
En cas de Refus => Déconnexion de l'utilisateur.
En cas d'acceptation : Enregistrement du OK dans l'AD et le message ne réaparaitra plus jamais.
 
Pour l'instant, je n'ai qu'un ridicule début de script (encore une fois, je débute !  :) )
 
Info : Travail sur un Windows Server 2008.
 
Mon script est en VBS  :
 

Code :
  1. '################################################################
  2. ' Script de GPO
  3. ' Affiche la chartre de informatique aux utilisateurs lors de l'ouverture de la session.
  4. ''Si l'utilisateur l'accepte alors elle ne s'affichera plus.
  5. '################################################################
  6. ' Déclaration variable "acceptee" qui si elle vaut 1 ne s'affiche plus car cela signifie que l'utilisateur a accepté  la chartre
  7. Dim acceptee
  8. acceptee=0
  9. 'Affichage du message de la chartre
  10. wscript.echo "Chartre Informatique"
  11. acceptee=1


 
Ce que j'aimerais avoir :
 

Code :
  1. '################################################################
  2. ' Mon nouvel algo
  3. '################################################################
  4. ' Déclaration variable "acceptee" qui si elle vaut 1 ne s'affiche plus car cela signifie que l'utilisateur a accepté  la chartre
  5. Dim acceptee
  6. acceptee=0
  7. ' Conditions
  8. wscript.echo "Chartre Informatique"
  9. SI %utilisateur% clic "J'accepte" ALORS
  10.    acceptee=1
  11.    %Le message ne s'affichera plus%
  12. SINON SI %utilisateur% clic "Je refuse"
  13.    %FERMETURE DE LA SESSION%
  14. FIN SI


 
Voilà, j'espère avoir été suffisement clair.
Merci beaucoup !  :jap:

Reply

Marsh Posté le 19-05-2011 à 09:59:23   

Reply

Marsh Posté le 19-05-2011 à 23:12:34    

Ce sujet a été déplacé de la catégorie Windows & Software vers la categorie Programmation par Je@nb

Reply

Marsh Posté le 20-05-2011 à 11:45:21    

Hello,
 
Voici un fichier fonctionnel sur XP. J'ai fait ca 'vite fait' pas tester sur d'autres OS
 

Code :
  1. MonOrdi = "."
  2.     Const EWX_LOGOFF   = 0
  3.  
  4.     Const ForReading = 1, ForWriting = 2
  5.     Set objFSO = CreateObject("Scripting.FileSystemObject" )
  6.  
  7. 'Si le fichier existe, c'est qu'il a deja cliqué sur Oui, donc on quitte le scrit    
  8.     If objFSO.FileExists("C:\test.txt" ) Then
  9.         WScript.Quit(0)
  10.     Else
  11. 'Sinon on pose la question
  12.         msg = MsgBox("Accepter la chartre Informatique ?",4)
  13. 'Si il accepte/clique sur oui, on créé un fichier et on ecrit dedans "ok"
  14.         If msg = 6 Then
  15.            Set f = objFSO.OpenTextFile("c:\test.txt", ForWriting,true)
  16.                f.write("ok" )
  17.            WScript.Quit(0)
  18.         Else
  19. 'Sinon (donc le fichier n'existe pas et il clique sur non) on ferme la session
  20.            Set objWMIService = GetObject("winmgmts:{(Shutdown)}//" & MonOrdi & "/root/cimv2" )
  21.            Set SelOSPs = objWMIService.ExecQuery("select * from Win32_OperatingSystem where Primary=true" )
  22.     
  23.            for each SelOSP in SelOSPs
  24.                SelOSP.Win32Shutdown EWX_LOGOFF
  25.            next
  26.     
  27.            WScript.Quit(0)
  28.         End If
  29.     End If
  30.  
  31.  
  32.  
  33. WScript.Quit(0)


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 20-05-2011 à 11:49:50    

Vista ok ;)


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 25-05-2011 à 15:46:09    

C'est franchement super dje69r !  :bounce:  
Je suis très proche de ce que je voulais.
 
J'ai 2, 3 petites questions/demandes. Encore une fois je débute j'aimerais tout comprendre.
 
1) Tu peux m'expliquer la différence entre mon script et le tiens d'un point de vue langage ? En effet, j'utilise des "wscript.echo" et toi des "msg" alors que les 2 sont écrits en VBS.
 
2) J'aimerais enregistré ce fichier dans le profil local de l'utilisateur (ou mieux dans l'AD).  
J'ai tenté de remplacer C:\ par %userprofile% mais j'ai une erreur "Chemin d'accès introuvable".
En fait plusieurs utilisateurs peuvent utiliser le même PC donc voilà.
 
3) Après cela, serais-t-il possible que tu m'explique le fonctionnement du script quasi ligne par ligne ? Je sais j'en demande beaucoup mais je débute et les cours personnalisés c'est ce qu'il y a de mieux :D
 
Merci beaucoup dje69r  :jap:

Reply

Marsh Posté le 25-05-2011 à 16:18:19    

1) le echo donne une information sous forme de boite avec un bouton ok. Il ne renvoit rien.
 
Un Msgbox est parametrable pour avoir des bouton "oui" ou "non", "ok" "cancel", "oui" "non" "cancel" et en fonction du bouton cliqué on peut faire des actions puiqu'il va renvoyer des constantes.
Par exemple ligne 14 le bouton "oui" renvoit la valeur 6, on peut donc tester si l'utilisateur a cliqué sur "oui" ou sur "non"
 
2)

Code :
  1. Set WshShell = CreateObject("WScript.Shell" )
  2. Set WshSysEnv = WshShell.Environment("PROCESS" )
  3. MsgBox WshSysEnv("USERPROFILE" )


WshSysEnv("USERPROFILE" ) renvoit pour XP "C:\Documents and Settings\UserEnCours" ou Vista/7 "C:\Users\UserEnCours"
 
3) Mon code, sans me vanté, est tout de meme plutot bien commenté... Dis moi plutot o tu bloques... ;)


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 26-05-2011 à 09:52:28    

1 ) ok
 
2) J'ai copié/collé cette portion en haut de mon code, le MsgBox s'affiche bien mais comment passer cette variable dans les commandes ?
J'ai tenté de remplacer le C:\ par "USERPROFILE" et de multiples variantes mais j'ai des erreurs.
 
3)
J'ai compris l'esprit général du code. Mais j'aimerais saisir l'importance de chaque ligne.
Tu peux m'expliquer partie par partie ? (je zapperais celles que je comprends)
La première par exemple :
 

Code :
  1. MonOrdi = "." (Qu'est que c'est ?)
  2.     Const EWX_LOGOFF   = 0 (apparemment ça fait référence à la fermeture de session ?)
  3.     Const ForReading = 1, ForWriting = 2 (Qu'est que c'est ?)
  4.     Set objFSO = CreateObject("Scripting.FileSystemObject" ) (ça veut dire quoi ?)


Je préfère le pas à pas sur un sujet qui me concerne que certains tuto sur Internet. Merci merci :)
 
Voilà, j'espère ne pas être perçu comme quelqu'un de trop "exigeant"  :sweat:  
 
Encore merci :D
 

Reply

Marsh Posté le 26-05-2011 à 10:07:26    

Double post, désolé. (à supprimer)


Message édité par jpass2 le 26-05-2011 à 10:08:55
Reply

Marsh Posté le 26-05-2011 à 10:23:26    

2) Je suis surpris étant donné que je vois que tu posts du PHP, C++ etc. :??:
Soit tu utilises tel quel l'objet WshEnvironment, soit tu l'affectes à une variable.
Ex :

Citation :

Set f = objFSO.OpenTextFile(WshSysEnv("USERPROFILE" ) & "\test.txt", ForWriting,true)


Citation :

Chemin = WshSysEnv("USERPROFILE" )
Set f = objFSO.OpenTextFile(Chemin & "\test.txt", ForWriting,true)

L'objet WshEnvironment contient les variables d'environnement de Windows
 
 
3)

Citation :


MonOrdi = "." 'le point c'est la machine locale. Donc derriere quand on attaque en ligne 20 la source de donnée cimv2 (qui contient toutes les infos sur le système et leur etat) on met le point dans la chaine. Mais si on veut changer de machine bah c'est plus facile de changer la variable "MonOrdi" que directement dans la ligne 20.
    Const EWX_LOGOFF   = 0 'On déclare une constante. Plutot que d'avoir un 0 en ligne 24, on a EWX_LOGOFF, ce qui pour relire est plus facile a comprendre. C'est un argument utilisé pour la méthode Win32Shutdown. 1 = Eteindre, 2 = Reboot etc.
    Const ForReading = 1, ForWriting = 2 'Idem pour la ligne 15. Après le nom des constantes c'est plus historique qu'autre chose. Mais si tu regardes en lignes 15, la méthode OpenTextFile demande des arguments. Notamment le mode d'ouverture du fichier : ForReading ou 1 : ouvre en lecture seule le fichier, ForWriting ou 2 : ouvre un fichier et permet d'ecrire dedans, ForAppending ou 8 : permet d'ecrire directement a la fin du fichier.
    Set objFSO = CreateObject("Scripting.FileSystemObject" ) ' Tu crées un objet/conteneur faisant reference à l'objet FileSystemObject, qui va te permettre manipuler les dossiers/fichiers windows.


 
 
Edit : quand tu edites ton post, tu as une case a cocher "supprimer le message"... Pour degager ton "double post" ;)


Message édité par SuppotDeSaTante le 26-05-2011 à 10:55:27

---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

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