Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1251 connectés 

  FORUM HardWare.fr
  Windows & Software

  Lancer un script a une heure donné

 

 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lancer un script a une heure donné

n°1322221
helvetik
Posté le 22-10-2003 à 11:29:17  profilanswer
 

Bonjour a tous!
J'aimerais que les poste de mon domaine se déconnecte de leur session a une heure donné.
Pour cela j'utiliserais un script.
La question, c'est: comment mes poste peuvent-ils lancer un script sans passer par les tâche planifiés?
 
Merci
A+

mood
Publicité
Posté le 22-10-2003 à 11:29:17  profilanswer
 

n°1322292
ced822
Posté le 22-10-2003 à 12:32:29  profilanswer
 

une commande at mais ca revient au meme que les taches planifiées...

n°1322330
Requin
Posté le 22-10-2003 à 13:17:51  profilanswer
 

Je pense que ton problème c'est que tu ne veux pas passer sur chaque machine régler une tâche planifiée ?
 
Côté serveur tu peux définir des heures de login pour tes comptes. Sinon en planifiant une tâche rien ne t'empêche de déconnecter les stations à distance. Va sur www.sysinternals.com et télécharge psshutdown.exe (pstools), cet utilitaire permet de faire un shutdown, un restart ou un logoff suivant les paramètres que tu lui passe y compris sur des machines distantes (il suffit de faire tourner la tâche avec un compte admin du domaine).
 
L'avantage de faire un logoff avant d'interdire à l'utilisateur le login c'est de lui laisser une période de grace pendant laquelle il a un message sur l'écran et peut enregistrer ses documents.
 
Tu remarqueras qu'il suffit d'un bête fichier batch avec le nom de tes machines, si tu veux plus de rafinement tu peux utilier Windows Scripting Host (WSH), on pourrait imaginer que tu vas piocher la liste des machines d'une OU directement dans AD avec ADSI et que tu chutdown les machines de cette OU.

n°1326769
helvetik
Posté le 26-10-2003 à 20:49:44  profilanswer
 

Merci pour la réponse.
J'utilisiserais se script de fermeture de session pour etre sur qu'aucun programme n'est lancé a 3heure du mat lors de ma sauvegarde.
J'utilise NtBackup, donc y'a pas d'option open files comme sur arc serve (enfin, je crois. :/)
Je ne veux pas de WSH.
Mon script est déjà ok. Pas besoin de shutdown.exe ou autre truc.
 
Merci


Message édité par helvetik le 26-10-2003 à 20:50:58
n°1326773
CK Ze CaRi​BoO
Posté le 26-10-2003 à 20:56:04  profilanswer
 

dans les options des comptes utilisateurs, tu fixes des heures de connexion comme dit plus haut
tu dis par exemple de 2h à 5h du matin, personne peut se logger
ya une case à cocher pour que les sessions actives soient automatiquement fermées au passage à 2h (ou bien c sur tse ??)

n°1326777
helvetik
Posté le 26-10-2003 à 21:00:06  profilanswer
 

le probleme, c'est que cette option interdit le log, mais ne délog pas....

n°1326778
CK Ze CaRi​BoO
Posté le 26-10-2003 à 21:01:31  profilanswer
 

t'as lu ce que j'ai écrit ?

n°1326781
helvetik
Posté le 26-10-2003 à 21:08:49  profilanswer
 

Ouais j'ai lu. Mais je ne trouve pas l'option "ya une case à cocher pour que les sessions actives soient automatiquement fermées au passage à 2h"
Je peux donner des authorisation de log. C'est tout. L'utilisateur loggé n'est pas déconnecter si il sort des heures. Ou alors j'ai pas su faire. C'est possible aussi et fodra m'éclairer un peu plus.
 
Merc

n°1326784
CK Ze CaRi​BoO
Posté le 26-10-2003 à 21:11:31  profilanswer
 

l'ennui c que j'ai pas d'AD sous la main
mais si tu trouves pas l'option c ptet que j'ai confondu avec la console de terminal server
je verrai ça dans la semaine si je croise un AD

n°1326790
helvetik
Posté le 26-10-2003 à 21:20:44  profilanswer
 

Effectivement avec TS, tu peux virer l'utilisateur apprès un temps de connexion ou d'inactivité.
Mais pas avec un log local.

mood
Publicité
Posté le 26-10-2003 à 21:20:44  profilanswer
 

n°1327477
Requin
Posté le 27-10-2003 à 16:46:01  profilanswer
 

helvetik a écrit :

le probleme, c'est que cette option interdit le log, mais ne délog pas....


 
C'est bien pour celà que je te disais de prendre psshutdown qui permet de faire un logoff (ou delog si tu préfère)

n°1327491
El Pollo D​iablo
REACHED THE END OF CAKE
Posté le 27-10-2003 à 16:53:35  profilanswer
 

Requin a écrit :


 
C'est bien pour celà que je te disais de prendre psshutdown qui permet de faire un logoff (ou delog si tu préfère)


 
Et via une GPO on peut faire executer un script a une heure precise, et pas juste lors du boot/arret logon/logoff ?

n°1327506
Requin
Posté le 27-10-2003 à 17:06:57  profilanswer
 

Tâche planifiée... tu peux ajouter une tâche avec un script par exemple :
http://www.microsoft.com/technet/t [...] efault.asp
 
En fait je comprens pas pourqoi il ne veut pas utiliser les tâches planifiées... car ca sert à celà, lancer qqch à une heure précise.


Message édité par Requin le 27-10-2003 à 17:09:38
n°1327516
El Pollo D​iablo
REACHED THE END OF CAKE
Posté le 27-10-2003 à 17:10:17  profilanswer
 

Requin a écrit :

Tâche planifiée... tu peux ajouter une tâche avec un script par exemple :
http://www.microsoft.com/technet/t [...] efault.asp


 
Ok merci, donc c'est en passant indirectement par une GPO, ca reste de la tache planifiée.

n°1329082
helvetik
Posté le 28-10-2003 à 23:04:35  profilanswer
 

Requin a écrit :


En fait je comprens pas pourqoi il ne veut pas utiliser les tâches planifiées... car ca sert à celà, lancer qqch à une heure précise.


Ben c'est pasqu'il fo ke je m'ammuse a ajouter la tache sur chaque pc.
Le jour ou on ajoute un nouveau pc ou qu'on en réinstall un, tu peux etre sur que j'oublie de remettre la tache...
Alors qu'un script ou un GPO résoudrait ce problem.
Mais apparement, a par utilisé un soft dédié, y'a pas l'air d'avoir un moyen de le faire sous windows...  
Domage.

n°1329087
helvetik
Posté le 28-10-2003 à 23:08:06  profilanswer
 

A moins alors d'avoir un moyen de créer des tache planifié via script?? C'est possible?

n°1329094
El Pollo D​iablo
REACHED THE END OF CAKE
Posté le 28-10-2003 à 23:13:57  profilanswer
 

helvetik a écrit :

A moins alors d'avoir un moyen de créer des tache planifié via script?? C'est possible?


 
C'est un peu ce que Requin a expliqué juste au dessus  :whistle:

n°1329099
helvetik
Posté le 28-10-2003 à 23:17:58  profilanswer
 


attend que je relise  :ange:  
 
oups..
 
j'avais pas vu le lien...
On va mettre ca sur le compte de la fatigue.  :whistle:  
 
 

n°1329105
helvetik
Posté le 28-10-2003 à 23:20:04  profilanswer
 

bon, ben je teste demain, si j'ai le temps...
La je vais au pieu.
A+ et merci.

n°1341665
helvetik
Posté le 11-11-2003 à 10:43:20  profilanswer
 

J'ai pas eu le temps de la tester avant aujour d'hui.
Voilà le code (avec 1 ou 2 modif de ma part) si ca interresse quelqu'un:

Code :
  1. strComputer = "."
  2. Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2" )
  3. Set objNewJob = objWMIService.Get("Win32_ScheduledJob" )
  4. errJobCreated = objNewJob.Create ("c:\hello.bat", "********073000.000000-420", True , 1 OR 2 OR 4 OR 8 OR 16 OR 32 OR 64, , , JobID) '07:30 = 23:30. Le lundi c'est 1, le mardi 2, le mercredi 4, ..., le dimanche 64
  5. 'Wscript.Echo errJobCreated 'donne le numéro d'erreur ou de succès a la fin du script dans un msgbox lors de la création (apparement, 0 =succès, 21 =erreur) Je l'ai donc mis en commentaire


On remarque que la tâche est bien créé, mais qu'il n'y a pas d'utilisateur. Si quelqu'un sait comment en ajouter un, je suis preneur.
A+

n°1341673
Requin
Posté le 11-11-2003 à 11:00:42  profilanswer
 

A priori tu ne peux pas soumettre un utilisateur lors de la cération... la raison c'est que l'interface WMI fait appel à une ancienne API Windows (celle similaire à la commande AT) au lieu d'appeler la nouvelle (celle utilisée par exemple par le module graphique des tâches planifiées) :
 
Voici la doc qui concerne l'appel aux tâches planifiées via WMI :
http://msdn.microsoft.com/library/ [...] ledjob.asp

n°2412675
Kin
Posté le 17-05-2006 à 10:04:48  profilanswer
 

Bonjour,
 
Je me permet de upper ce topic parce que je suis dans la même situation que helvetik.
Malheureusement, du haut de mon faible niveau, je n'arrive pas à comprendre correctement comment faire fonctionner les scripts donnés dans les liens vers M$.  
 
Quelqu'un pourrait m'aider ?
 
Merci d'avance, :jap:

n°2412751
lombrusco
Posté le 17-05-2006 à 11:39:14  profilanswer
 

je te conseille ce .doc  (supportech.insa-lyon.fr/Download/WhitePapers/Divers/Script-connexion-conseils.doc) pour tout ce qui est lancement de scripts par GPO  
 
sinon tu peux regarder du coté des solutions payantes (ou plutot leurs démos ^^) qui te permettent généralement de faire des scripts sans rien connaitre aux problèmes de gpo ou au scripting etc....

n°2412778
Kin
Posté le 17-05-2006 à 12:08:14  profilanswer
 

Merci pour le .doc, je viens de l'imprimer et le lire !
 
J'ai compris beaucoup de choses, c'est bien clair et même si ca ne correspond pas à ma situation ça m'a débloqué.
 
Je m'y met en rentrant à 14h, merci ;)
 
:hello:

n°2412911
Kin
Posté le 17-05-2006 à 14:37:08  profilanswer
 

Je m'en sors pas ! :cry:
 
Je comprends pas bien, déjà. J'suis sûr que j'pourrais m'en sortir avec le script vu plus haut par helvetik, mais j'arrive pas à déchifrer !
 
J'aimerai un script qui éteint l'ordinateur (voir, un logoff) tous les jours à 21:00. Tout ça gérer depuis un domaine AD sous 2003 server.  
 
Merci d'avance si quelqu'un peut m'aider :'(

n°2412931
lombrusco
Posté le 17-05-2006 à 14:55:20  profilanswer
 

éteindre ou déconnecter de la session?

n°2412975
Kin
Posté le 17-05-2006 à 15:57:36  profilanswer
 

Peu importe, mais le mieux est d'éteindre.
 
Merci :jap:

n°2415307
Kin
Posté le 20-05-2006 à 09:53:40  profilanswer
 

up :jap:

n°2415406
i'm philou
Posté le 20-05-2006 à 12:02:42  profilanswer
 

crée un fichier avec ça dedans :  
 
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2" )
Set objNewJob = objWMIService.Get("Win32_ScheduledJob" )
errJobCreated = objNewJob.Create ("c:\windows\system32\shutdown.exe -s", "********120000.000000-420", True , 1 OR 2 OR 4 OR 8 OR 16, , , JobID) '07:30 = 23:30. Le lundi c'est 1, le mardi 2, le mercredi 4, ..., le dimanche 64
'Wscript.Echo errJobCreated 'donne le numéro d'erreur ou de succès a la fin du script dans un msgbox lors de la création (apparement, 0 =succès, 21 =erreur) Je l'ai donc mis en commentaire
 
en rouge, ce sont les commentaires qui permettent de décrire l'action de la commande, ils sont facultatifs
en gras, le caractère (')qui permet d'écrire une ligne de commentaire ou d'invalider la ligne de commande qui suit juste apres.
 
le 120000 donne l'heure, ici , 21H, j'ai trouvé en bricolant mais j'ai pas pigé la logique du truc.
le 1, 2, 3.. représente les jours.
 
ici : 1 OR 2 OR 4 OR 8 OR 16 veut dire le lundi, mardi, mercredi, jeudi et vendredi. Si tu veux le WE, faut rajouter 'OR 32 OR 64'
 
a noter que il te faudra faire 2 scripts : 1 pour les postes XP, 1 pour les postes 2K car dans un cas, on a c:\windows et dans l'autre c:\winnt et que le passage de la variable %systemroot%\system32 dans le script à la place de c:\win... ne fonctionne pas.
 
A noter aussi qu'en déployant ce script par AD, les postes clients vont le lire tous les jours au démarrage et vont donc à chaque fois créer une tache planifiée identique. moralité : au bout d'un mois, tu as une vingtaine de taches planifiées identiques sur un poste. Je sais pas dans quelle mesure, ça peut faire merder le planificateur.


Message édité par i'm philou le 20-05-2006 à 12:08:23
n°2416997
helvetik
Posté le 22-05-2006 à 14:57:34  profilanswer
 

Hello !
 
J'ai une autre solution que j'ai trouvé il y a un moment maintenant, si ça t'intéresse. Et c'est sans passer par une tache local à chaque station, mais une tâche sur le serveur.
Les prérequis sont :
- il te faut le programme shutdown.exe (présent sur win2k3 et XP, mais pas sur win2k) ou équivalent (psshutdown.exe)
- les stations doivent avoir WMI, donc au minimum win2k. Pas de linux ou autres OSA.
- le partage administratif \\computername\c$ doit exister (et être accessible)
- il faut que l'utilisateur qui lance la tâche aie les droits administrateur sur les stations à éteindres.
 
Voici le script :

Code :
  1. ' ------------------------------------------------------------------------------
  2. ' Script d'extinction des machines présentes sur un réseau
  3. ' HELVETIK Corp.
  4. ' ------------------------------------------------------------------------------
  5. ' Docu  : <ShutAllDown.Ver>, <ShutAllDown.Inf>
  6. ' Code  : <ShutAllDown.Vbs>
  7. ' ------------------------------------------------------------------------------
  8. ' ------------------------------------------------------------------------------
  9. ' Main
  10. ' ------------------------------------------------------------------------------
  11.   OPTION EXPLICIT
  12.   PUBLIC net, fso, shell, exception, temps, ByeMsg
  13.   Set net   = Wscript.CreateObject("WScript.Network"           )
  14.   Set fso   = WScript.CreateObject("Scripting.FileSystemObject" )
  15.   Set Shell = Wscript.CreateObject("WScript.Shell"             )
  16.   exception = array("CHRONO-SRV02","CHRONO-SRV01","CHRONO-DEV01","CHRONO-DEV02","CHRONO-TEC01" )
  17.   temps     = 30
  18.   ByeMsg    = "Arrêt automatique initialisé par l'administrateur"
  19.   CALL DomainDetect()
  20. ' ------------------------------------------------------------------------------
  21. ' End
  22. ' ------------------------------------------------------------------------------
  23. ' ------------------------------------------------------------------------------
  24.   FUNCTION DomainDetect
  25. ' ------------------------------------------------------------------------------
  26.   DIM ComputerSystem, domain, ComputerItem
  27.   Set ComputerSystem = GetObject("winmgmts:{impersonationLevel=impersonate}" ).InstancesOf ("Win32_ComputerSystem" )
  28.   For Each ComputerItem in ComputerSystem
  29.     '{
  30.        Domain = ComputerItem.Domain
  31.        WScript.Echo "Extinction des pc du domaine : " & Domain
  32.        EnumComputer(Domain)
  33.     '}
  34.   Next
  35.   END FUNCTION
  36. ' ------------------------------------------------------------------------------
  37.   FUNCTION EnumComputer (domain)
  38. ' ------------------------------------------------------------------------------
  39.   DIM oWinnt, classe, Computer, root, oDomainItem
  40.   SET oWinnt=GetObject("WinNT://" & domain)
  41.   FOR EACH oDomainItem in oWinnt
  42.     '{
  43.        classe=oDomainItem.Class
  44.        Computer=UCase(oDomainItem.Name)
  45.        IF ( classe="Computer" ) THEN
  46.          '{
  47.             CALL ShutDownComputer(Computer)
  48.          '}
  49.        END IF
  50.     '}
  51.   NEXT
  52.   END FUNCTION
  53. ' ------------------------------------------------------------------------------
  54.   FUNCTION ShutDownComputer(computer)
  55. ' ------------------------------------------------------------------------------
  56.   DIM root
  57.   root   = "\\" & computer & "\c$"
  58.   If Not ( fso.FolderExists(root) ) Then
  59.         '{
  60.    WScript.Echo "machine " & computer & " n'a pas été trouvé sur le réseau."
  61.         '}
  62.   Else
  63.         '{
  64.    If ( IsNotAnExcept(computer) ) Then
  65.      '{
  66.         Shell.Run ("psshutDown \\" & computer & " -c -k -t " & Temps)' & " -m"" & ByeMsg & """ )
  67.         WScript.Echo "machine " & computer & " en cours d'extinction."
  68.              '}
  69.    End If
  70.         '}
  71.   End If
  72.   END FUNCTION
  73. ' ------------------------------------------------------------------------------
  74.   FUNCTION IsNotAnExcept(computer)
  75. ' ------------------------------------------------------------------------------
  76.   DIM i
  77.   For i=0 To UBound(exception,1) Step 1
  78.     '{
  79.        If   ( computer=exception(i) ) Then
  80.            '{
  81.       IsNotAnExcept=FALSE
  82.       EXIT FUNCTION
  83.    '}
  84.        Else
  85.            '{
  86.       IsNotAnExcept=TRUE
  87.            '}
  88.        End If
  89.     '}
  90.   Next
  91.   END FUNCTION


 
Pour finir, je ne l'ai jamais utilisé en prod, donc il n'est pas très propre au niveau du code, mais il fonctionne et c'est le principal....
 
Au niveau du fonctionnement, il éteind toutes les machine du domaine qu'il détecte sauf celles spécifiées dans le tableau "exception".
 
 
A+


Message édité par helvetik le 22-05-2006 à 15:03:26
n°2418020
Kin
Posté le 23-05-2006 à 17:53:30  profilanswer
 

Merci beaucoup, j'essaye ça demain, j'suis trop crevé ce soir !  
 
:jap:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software

  Lancer un script a une heure donné

 

Sujets relatifs
impossiblee de lancer un ghostArreter lancer un service avec un bat
Synchronisation de l'heureErreur de script!: ligne 202!!! aidez moi!!!!!
Office 2003 et son deboggeur de scriptComment faire redemarrer windows un jour précis / a une heure précise?
comment intedire l'execution de script CGI ?Impossible de changer l'heure
lancer un exe sur un serveur web IISCréer un script dans quel langage pour être "propre"??
Plus de sujets relatifs à : Lancer un script a une heure donné


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR