[XP] VBScript pour éteindre les machines

nhourcade Messages postés 2 Statut Membre -  
 Jacques -
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

4 réponses

  1. nico8679 Messages postés 168 Statut Membre 58
     
    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
  2. nhourcade Messages postés 2 Statut Membre
     
    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
  3. diabo
     
    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