WMI pour redémarrer la machine distante
J'ai trouvé ce code sur un ancien fil de l'arrêt de la machine locale:
using System.Management;
void Shutdown()
{
ManagementBaseObject mboShutdown = null;
ManagementClass mcWin32 = new ManagementClass("Win32_OperatingSystem");
mcWin32.Get();
//You can't shutdown without security privileges
mcWin32.Scope.Options.EnablePrivileges = true;
ManagementBaseObject mboShutdownParams =
mcWin32.GetMethodParameters("Win32Shutdown");
//Flag 1 means we want to shut down the system. Use "2" to reboot.
mboShutdownParams["Flags"] = "1";
mboShutdownParams["Reserved"] = "0";
foreach (ManagementObject manObj in mcWin32.GetInstances())
{
mboShutdown = manObj.InvokeMethod("Win32Shutdown",
mboShutdownParams, null);
}
}
Est-il possible d'utiliser la même méthode WMI pour redémarrer drapeau "2" une machine à distance, pour lequel je n'ai que le nom de la machine, pas d'adresse ip.
EDIT: j'ai actuellement:
SearchResultCollection allMachinesCollected = machineSearch.FindAll();
Methods myMethods = new Methods();
string pcName;
ArrayList allComputers = new ArrayList();
foreach (SearchResult oneMachine in allMachinesCollected)
{
//pcName = oneMachine.Properties.PropertyNames.ToString();
pcName = oneMachine.Properties["name"][0].ToString();
allComputers.Add(pcName);
MessageBox.Show(pcName + "has been sent the restart command.");
Process.Start("shutdown.exe", "-r -f -t 0 -m \\" + pcName);
}
mais cela ne fonctionne pas, et je préfère WMI aller de l'avant.
source d'informationauteur Stephen Murby
Vous devez vous connecter pour publier un commentaire.
À l'adresse des requêtes WMI sur un ordinateur distant, il vous suffit de spécifier que le nom de l'ordinateur (ou adresse IP) dans le
ManagementScope
objet.Je ne suis pas bien en C#, mais voici un exemple, je suis venu avec l'aide de MSDN et Code WMI Créateur (qui est par ailleurs un excellent outil pour générer du code WMI, et prend en charge C#, entre autres). Espérons que ce code vous donnera une idée.
(Avertissement: Ce code n'est pas testé.)
J'ai eu du mal avec cela aussi. WMI peuvent être trompeuses, avec des méthodes pour les classes et les objets. Ma solution est pour le redémarrage d'un hôte sur le réseau avec C# et WMI, mais il est facilement simplifié de la machine locale:
Vous pouvez utiliser la commande d'arrêt si vous avez besoin d'un non-WMI solution.
Utiliser l'option-m de l'arrêt de la machine distante.
Consulter ce lien pour plus d'info.
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/shutdown.mspx
cela fonctionne comme sharm