[XP] VBScript pour éteindre les machines

Fermé
nhourcade Messages postés 2 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 21 septembre 2006 - 21 sept. 2006 à 12:33
 Jacques - 25 juin 2008 à 18:11
Salut,

Nous avons sur notre campus plus de 400 machines. Et nous voulons faire en sorte que les machines s'éteignent automatiquement tous les soirs vers par exemple, 23h00.

Nous voulons faire avec un VBScript qui créé un plannificateur de tâche.

Le script fonctionne bien, c'est à dire qu'il créé la tâche mais ne s'applique pas.
Si je regarde les options de la tâche créé, il faut préciser un user name et mot de passe admin pour que la tâche fonctionne. Mais je ne sais pas comment l'intégrer au script.

Voici le script:

'==========================================================================
'
' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 4.0
'
' NAME: ScheduleShutdown.vbs
'
' AUTHOR: IS Department , IMD
' DATE : 13/09/2006
'
' COMMENT: Schedules a daily shutdown of the computer everyday at 15:00
'
'==========================================================================

strComputer = "."
strOldCommand="shutdown.exe -s -t 00"
strNewCommand=strOldCommand

'Checks if the schedule has already been scheduled
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colScheduledJobs = objWMIService.ExecQuery("Select * from Win32_ScheduledJob")
For Each objJob in colScheduledJobs
if objJob.Command=strOldCommand Then
AlreadyScheduled = True
end If
Next

'If it has not been already scheduled, then schedule it
if not AlreadyScheduled Then
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
JobID = "DailyShutdown"
Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
errJobCreate = objNewJob.Create _
(strNewCommand, "********150000.000000+120", _
True , _
1 OR 2 OR 4 OR 8 OR 16 OR 32 OR 64, _
, _
False, _
JobId)
If not errJobCreate = 0 Then
WScript.Echo "Job not created. Error code = " & errJobCreate
Else
wscript.echo "Scheduled Task created successfully."
End If
Else
wscript.echo "No need to create task"
End If

Merci d'avance pour votre aide,

Nicolas
A voir également:

4 réponses

nico8679 Messages postés 167 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 15 juillet 2008 58
21 sept. 2006 à 12:47
Salut.
pourquoi n'uitlise tu pas dos?

tu cré la ligne de commande suivante:

shutdown/s/m\\nom_ordinateur

tu le met dans un fichier batch (une ligne pour chaque poste a éteindre )
tu met le fichier batch sur le serveur et tu lui attribue
une tache planifiée...

le tour est joué
0
nhourcade Messages postés 2 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 21 septembre 2006
21 sept. 2006 à 14:12
Salut,

J'y avais pensé mais cela veut dire rentrer à la main les 400 machines dans le batch. Ceci n'est pas une solution.

On veut vraiment faire qqch d'automatique.

merci,

Nico
0
c'est pas toi qui la fait?
deja au lieu de 1 OR 2 OR 4 OR 8 OR 16 OR 32 OR 64 met 127

ensuite pour une execution a 23h il faut mettre
"********230000.000000+060" au lieu de "********150000.000000+120" (+60= GMT+1)

sinon je vois pas a quoi sa sert:

'Checks if the schedule has already been scheduled
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colScheduledJobs = objWMIService.ExecQuery("Select * from Win32_ScheduledJob")
For Each objJob in colScheduledJobs
if objJob.Command=strOldCommand Then
AlreadyScheduled = True
end If
Next
0
Le SNMP vous connaissez ?

C'est un protocole qui permet de commander des machines à distances.

Il existe des utilitaires permettant de voir l'ensemble des machines du réseau et d'y appliquer des policies.

(comme "net-snmp" qui est sous licence libre - téléchargeable sur https://sourceforge.net/projects/net-snmp/files/net-snmp%20binaries/ - Site officiel: http://www.net-snmp.org/ )
0