4 votes

Opérations mathématiques dans la clause select d'une requête WMI

Dans mon application console (.NET), j'exécute la requête WMI comme suit :

ManagementObjectSearcher query;
        ObjectQuery oq;
        ManagementObjectCollection objectCollection;
        try
        {
            oq = new ObjectQuery("SELECT TotalVisibleMemorySize, FreePhysicalMemory FROM Win32_OperatingSystem");
            query = new ManagementObjectSearcher(oq);
            objectCollection = query.Get();
        }
        catch
        {
            return null;
        }
        return objectCollection;

Je fais une division sur les données collectées pour les utiliser dans mon application. Cela fonctionne parfaitement pour moi pour le moment.
J'utilise plusieurs requêtes WMI pour mon application. Afin de créer une méthode unique pour exécuter toutes mes requêtes WMI à partir de la configuration, je devrai faire la division dans la clause select de la requête elle-même.
Je dois exécuter une requête WMI comme suit :

SELECT ((TotalVisibleMemorySize)/1024) as TotalVisibleMemorySize1, ((FreePhysicalMemory)/1024) as FreePhysicalMemory1 FROM Win32_OperatingSystem

Pour cette requête, je reçois une erreur Requête invalide.
Y a-t-il une erreur de syntaxe dans cette requête ou n'est-il pas possible de faire une division dans la clause select d'une requête WMI ?

2voto

Agnius Vasiliauskas Points 4115

Il semble que WMI ne prend pas en charge les requêtes complexes. Votre meilleur choix est de capturer les résultats WMI et de les convertir selon vos besoins :

foreach (ManagementObject mo in objectCollection)
{
Console.WriteLine("Mémoire totale = {0} Mo", 
Convert.ToInt32(mo.GetPropertyValue("TotalVisibleMemorySize"))/1024);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X