Click here to Skip to main content
15,896,359 members
Articles / Programming Languages / C#

CIMTool for Windows Management Instrumentation - Part 1

Rate me:
Please Sign up or sign in to vote.
5.00/5 (10 votes)
22 Feb 2013CPOL6 min read 37.3K   7.6K   31  
Use WMI to retrieve information about your system and genrate classes for easy WMI development.
using System;
using System.Collections.Generic;
using System.Management;
using System.Text;

namespace Harlinn.CIMTool.Utility
{
    public static class ManagementBaseObjectHelper
    {
        public static string GetString(this ManagementBaseObject mo, string fieldName)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return o.ToString();
                }
                catch (Exception)
                { }
            }
            return null;
        }

        public static byte GetByte(this ManagementBaseObject mo, string fieldName, byte defaultValue = 0)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToByte(o);
                }
                catch (Exception)
                { }
            }
            return defaultValue;
        }

        public static byte? GetNullableByte(this ManagementBaseObject mo, string fieldName)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToByte(o);
                }
                catch (Exception)
                { }
            }
            return null;
        }

        public static sbyte GetSByte(this ManagementBaseObject mo, string fieldName, sbyte defaultValue = 0)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToSByte(o);
                }
                catch (Exception)
                { }
            }
            return defaultValue;
        }

        public static sbyte? GetNullableSByte(this ManagementBaseObject mo, string fieldName)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToSByte(o);
                }
                catch (Exception)
                { }
            }
            return null;
        }

        public static short GetInt16(this ManagementBaseObject mo, string fieldName, short defaultValue = 0)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToInt16(o);
                }
                catch (Exception)
                { }
            }
            return defaultValue;
        }

        public static short? GetNullableInt16(this ManagementBaseObject mo, string fieldName)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToInt16(o);
                }
                catch (Exception)
                { }
            }
            return null;
        }

        public static ushort GetUInt16(this ManagementBaseObject mo, string fieldName, ushort defaultValue = 0)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToUInt16(o);
                }
                catch (Exception)
                { }
            }
            return defaultValue;
        }

        public static ushort? GetNullableUInt16(this ManagementBaseObject mo, string fieldName)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToUInt16(o);
                }
                catch (Exception)
                { }
            }
            return null;
        }


        public static int GetInt32(this ManagementBaseObject mo, string fieldName, int defaultValue = 0)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToInt32(o);
                }
                catch (Exception)
                { }
            }
            return defaultValue;
        }

        public static int? GetNullableInt32(this ManagementBaseObject mo, string fieldName)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToInt32(o);
                }
                catch (Exception)
                { }
            }
            return null;
        }

        public static uint GetUInt32(this ManagementBaseObject mo, string fieldName, uint defaultValue = 0)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToUInt32(o);
                }
                catch (Exception)
                { }
            }
            return defaultValue;
        }

        public static uint? GetNullableUInt32(this ManagementBaseObject mo, string fieldName)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToUInt32(o);
                }
                catch (Exception)
                { }
            }
            return null;
        }


        public static long GetInt64(this ManagementBaseObject mo, string fieldName, long defaultValue = 0)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToInt64(o);
                }
                catch (Exception)
                { }
            }
            return defaultValue;
        }

        public static long? GetNullableInt64(this ManagementBaseObject mo, string fieldName)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToInt64(o);
                }
                catch (Exception)
                { }
            }
            return null;
        }

        public static ulong GetUInt64(this ManagementBaseObject mo, string fieldName, ulong defaultValue = 0)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToUInt64(o);
                }
                catch (Exception)
                { }
            }
            return defaultValue;
        }

        public static ulong? GetNullableUInt64(this ManagementBaseObject mo, string fieldName)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToUInt64(o);
                }
                catch (Exception)
                { }
            }
            return null;
        }

        public static DateTime GetDateTime(this ManagementBaseObject mo, string fieldName)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return ManagementDateTimeConverter.ToDateTime(o.ToString());
                }
                catch (Exception)
                { }
            }
            return DateTime.MinValue;
        }

        public static DateTime GetDateTime(this ManagementBaseObject mo, string fieldName, DateTime defaultValue)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return ManagementDateTimeConverter.ToDateTime(o.ToString());
                }
                catch (Exception)
                { }
            }
            return defaultValue;
        }



        public static DateTime? GetNullableDateTime(this ManagementBaseObject mo, string fieldName)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return ManagementDateTimeConverter.ToDateTime(o.ToString());
                }
                catch (Exception)
                { }
            }
            return null;
        }

        public static TimeSpan GetTimeSpan(this ManagementBaseObject mo, string fieldName)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return ManagementDateTimeConverter.ToTimeSpan(o.ToString());
                }
                catch (Exception)
                { }
            }
            return new TimeSpan(0L);
        }

        public static TimeSpan GetTimeSpan(this ManagementBaseObject mo, string fieldName, TimeSpan defaultValue)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return ManagementDateTimeConverter.ToTimeSpan(o.ToString());
                }
                catch (Exception)
                { }
            }
            return defaultValue;
        }



        public static TimeSpan? GetNullableTimeSpan(this ManagementBaseObject mo, string fieldName)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return ManagementDateTimeConverter.ToTimeSpan(o.ToString());
                }
                catch (Exception)
                { }
            }
            return null;
        }

        public static bool GetBoolean(this ManagementBaseObject mo, string fieldName, bool defaultValue = false)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToBoolean(o);
                }
                catch (Exception)
                { }
            }
            return defaultValue;
        }


        public static bool? GetNullableBoolean(this ManagementBaseObject mo, string fieldName)
        {
            object o = mo[fieldName];
            if (o != null)
            {
                try
                {
                    return Convert.ToBoolean(o);
                }
                catch (Exception)
                { }
            }
            return null;
        }

    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Architect Sea Surveillance AS
Norway Norway
Chief Architect - Sea Surveillance AS.

Specializing in integrated operations and high performance computing solutions.

I’ve been fooling around with computers since the early eighties, I’ve even done work on CP/M and MP/M.

Wrote my first “real” program on a BBC micro model B based on a series in a magazine at that time. It was fun and I got hooked on this thing called programming ...

A few Highlights:

  • High performance application server development
  • Model Driven Architecture and Code generators
  • Real-Time Distributed Solutions
  • C, C++, C#, Java, TSQL, PL/SQL, Delphi, ActionScript, Perl, Rexx
  • Microsoft SQL Server, Oracle RDBMS, IBM DB2, PostGreSQL
  • AMQP, Apache qpid, RabbitMQ, Microsoft Message Queuing, IBM WebSphereMQ, Oracle TuxidoMQ
  • Oracle WebLogic, IBM WebSphere
  • Corba, COM, DCE, WCF
  • AspenTech InfoPlus.21(IP21), OsiSoft PI


More information about what I do for a living can be found at: harlinn.com or LinkedIn

You can contact me at espen@harlinn.no

Comments and Discussions