Rechercher : dans
Par :

Shutdown en vbscript

Dernière réponse le 2 sep 2008 à 10:16:46 seth, le 1 sep 2008 à 17:10:12 
 Signaler ce message aux modérateurs

Bonjour,je cherche depuis pas mal de temps un moyen d'éteindre mon pc en vbscript j'ai trouver pas mal de poste avec des codes mais je voudrais l'éteindre sans fenêtre qui me demande le mon du pc ou le temp avant l'extinction
je vous envoie un des code que j'ai trouver:

Dim objShell, strComputer, strInput
Dim strShutdown

Do
strComputer = (InputBox(" ComputerName to shutdown", "Computer Name"))
If strComputer <> "" Then
strInput = True
End if
Loop until strInput = True

strShutdown = "shutdown -s -t 0 -f -m \\" & strComputer

set objShell = CreateObject("WScript.Shell")

objShell.Run strShutdown

Wscript.Quit


je precise que je debute en vbscript
merci d'avance

Configuration: Windows xp
Firefox 3.0

Meilleures réponses pour « shutdown en vbscript » dans :
VBScript - Les structures conditionnelles Voir Qu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (VBScript associe le mot clé true à...
Introduction à VBScript Voir Présentation de VB Script VBScript (aussi appelé Visual Basic Scripting Edition) est un sous-ensemble du langage Visual Basic for Applications (VBA), un langage propriétaire de Microsoft prévu pour être intégré aux produits Microsoft Office©,...
VBScript - Types de données Voir Le type de données Variant Le type d'une variable correspond à la manière dont l'ordinateur stocke la variable en mémoire, c'est-à-dire la succession de 0 et de 1 dans les cases mémoire. VBScript comprend un type de données par défaut pouvant...
Eteindre/Allumer un PC à distance (Shutdown / Wake On Lan) VoirShutdown / Wake On Lan Bonjour à tous ! Vous ne vous êtes jamais demandé si c'était possible d'éteindre ou d'allumer un ordinateur à distance ? Et bien oui, c'est possible ! Et en plus, c'est à porté de tous. Après quelques heures de...
Télécharger Chrono Shutdown VoirIl est parfois nécessaire de redémarrer ou d'éteindre votre ordinateur en votre absence. Il est possible de l'éteindre à partir des fonctions de base de Windows, mais avec des durées relatives. Chrono Shutdown est un programme gratuit permettant de...
Télécharger Remote Shutdown Daemon VoirQuand vous gérer plusieurs ordinateur sur un même réseau, il n'est pas très aisé de devoir éteindre tous les postes, donc se déplacer. Remote Shutdown Daemon and client est une méthode permettant d'éteindre un ou des ordinateurs à travers le LAN ou...
Caractéristiques de VBScript VoirEnvironnement d'exécution VBScript est un langage s'intégrant dans des applications «hôtes», appelées conteneurs (en anglais «Scripting hosts»). Ainsi le conteneur fournit un environnement d'exécution ainsi qu'un certain nombre d'objets...
VBScript - Les mots clés VoirLes mots clés du langage Le langage VBScript possède cinq mots-clés correspondant à des valeurs spécifiques pour les variables. Le mot clé Empty Le mot clé Empty correspond à l'état non initialisé d'une variable, c'est-à-dire que la variable...
VBScript - Les fonctions de chaînes de caractères VoirLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes...

1

seth, le 1 sep 2008 à 23:00:18

J'ai trouver un code permettant d'activer .bat

mais je galère pour le crée, j'ai le code mais je m'arrive pas a le crée avec shutdown -s dedans

CreateObject(servername.typename [, location])

si quelqu'un pourrait m'aider merci

Répondre à seth

2

manirac, le 1 sep 2008 à 23:22:56

Je te propose le code suivant, en passant par la WMI.
Cependant, je l'ai fabriqué à partir de 2 codes en ma possession (qui fonctionnaient séparément) et je ne suis pas ûr que le collage final fonctionne...

On Error Resume Next
strComputer = "."
'connexion à la WMI locale
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
' requête sur les objets
Set oWindows = objWMIService.ExecQuery("Select Name From Win32_OperatingSystem")
For Each oSys In oWindows
oSys.Win32ShutDown(5)
Wscript.Echo "Arrêt système en cours : " & pComputer
Next

wscript.quit

Répondre à manirac

3

seth, le 1 sep 2008 à 23:46:43

Merci du code il y a bien une fenêtre qui s'affiche "arrêt système en cours" mais il ne s'éteint pas pourtant l'orsque l'on lance un shutdown sans temp définit il s'éteint au bout de 30s mais la pas , tu peut teste?
merci

Répondre à seth

4

seth, le 1 sep 2008 à 23:57:36

C'est peut-être une question conne mais c'est possible que WMI soit désactiver?

Répondre à seth

5

manirac, le 2 sep 2008 à 00:10:23

Non, ce n'est pas ça.
si on remplace
oSys.Win32ShutDown(5) par oSys.Win32ShutDown(4) qui permet de fermer la session, ça marche.
Quand je fais afficher l'erreur, j'obtiens un message "privilège non maintenu"
Mais je suis sous vista....

Peux tu modifier le script de la manière suivante :

On Error Resume Next
strComputer = "."
'connexion à la WMI locale
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
' requête sur les objets
Set oWindows = objWMIService.ExecQuery("Select Name From Win32_OperatingSystem")
For Each oSys In oWindows
oSys.Win32ShutDown(5)
if Err.Number <> 0 Then
Wscript.Echo "Erreur à l'arrêt : " & strComputer & " : " & Err.Description
Err.Clear
wscript.quit
end if

Next

wscript.quit

Et voir le message qu'il t'affiche ???

Répondre à manirac

6

seth, le 2 sep 2008 à 00:40:18

Ok j'essai merci

Répondre à seth

7

seth, le 2 sep 2008 à 00:42:55

J'ai pareil "erreur a l'arrêt privilège non maintenu"
je vais voir ce que l'on peut faire

Répondre à seth

8

seth, le 2 sep 2008 à 00:44:24

Sinon l'autre marche niquel

Répondre à seth

9

seth, le 2 sep 2008 à 00:51:51

J'ai trouver sa
Si votre application doit disposer d'un privilège, pour certains actions (comme par exemple demander l'extinction du poste de travail), vous pourrez utiliser la fonction ci-dessous. Notez qu'il est conseillé de toujours retirer un privilège une fois l'action effectuée.

La fonction suivante donne ou retire (suivant la valeur du paramètre grant le privilège donné en paramètre name :


bool __fastcall SetPrivilege(AnsiString name, bool grant)
{
TOKEN_PRIVILEGES wTokenIn, wTokenOut;
DWORD wLength;
HANDLE wCurrentProcess, wToken;
_LUID wLuid;
bool ret;

wCurrentProcess = GetCurrentProcess();
OpenProcessToken(wCurrentProcess, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &wToken);
LookupPrivilegeValue(NULL, name.c_str(), &wLuid);
wTokenIn.PrivilegeCount = 1;
wTokenIn.Privileges[0].Luid = wLuid;
wTokenIn.Privileges[0].Attributes = (grant?SE_PRIVILEGE_ENABLED:0);
ret = AdjustTokenPrivileges(wToken, FALSE, &wTokenIn, sizeof(TOKEN_PRIVILEGES), &wTokenOut,&wLength))
CloseHandle(wToken);

return ret;
}

Par exemple, pour ajouter le paramètre SE_SHUTDOWN_NAME, effectuer une action, et retirer le privilège, en nous basant sur les informations du MSDN listant les constantes d'autorisation (voir plus bas), nous allons utiliser :


SetPrivilege("SeShutdownPrivilege",true);
// actions
SetPrivilege("SeShutdownPrivilege",false);

Répondre à seth

10

manirac, le 2 sep 2008 à 09:04:12

OK, c'est bon à savoir.
En fait, au départ, mon code fonctionnait pour faire une extinction à distance d'un ordinateur.
Je me connectais à la WMI de celui-ci avec des privilèges d'administrateur, si bien que je n'avais jamais ce problème d'élévation de privilèges : ça fonctionnait toujours.

Donc ton problème est résolu ???

Répondre à manirac

11

manirac, le 2 sep 2008 à 10:11:21

Ton code ne fonctionne pas. Evidemment, car c'est du C... donc avec VBSscript....

J'ai trouvé comment changer le niveau de privilèges. Ca se fait à la connexion à la WMI.
Il faut donc modifier le code que je t'ai donné de la manière suivante :

On Error Resume Next

strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}\\" & strComputer & "\root\cimv2")
if Err.Number <> 0 Then
Wscript.Echo "Erreur à la connexion à " & strComputer & " : " & Err.Description
Err.Clear
wscript.quit
end if
Set oWindows = objWMIService.ExecQuery("Select Name From Win32_OperatingSystem")
if Err.Number <> 0 Then
Wscript.Echo "Erreur à la requête à " & strComputer & " : " & Err.Description
Err.Clear
wscript.quit
end if

For Each oSys In oWindows
oSys.Win32ShutDown(5)
if Err.Number <> 0 Then
Wscript.Echo "Erreur à l'arrêt du système " & strComputer & " : " & Err.Description
Err.Clear
wscript.quit
end if
Next
wscript.quit

Ainsi, ça marche aux petits oignons.

Bon courage.

Répondre à manirac

12

 seth, le 2 sep 2008 à 10:16:46

Merci de beaucoup de ton aide ca marche merci

Répondre à seth
Collection CommentÇaMarche.net