Пример #1
0
        public override object GetPropertyValue(PSAdaptedProperty adaptedProperty)
        {
            if (adaptedProperty == null)
            {
                throw new ArgumentNullException("adaptedProperty");
            }
            CimProperty tag = adaptedProperty.Tag as CimProperty;

            if (tag != null)
            {
                return(tag.Value);
            }
            if (!adaptedProperty.Name.Equals(RemotingConstants.ComputerNameNoteProperty, StringComparison.OrdinalIgnoreCase))
            {
                throw new ArgumentNullException("adaptedProperty");
            }
            CimInstance instance = (CimInstance)adaptedProperty.Tag;

            return(instance.GetCimSessionComputerName());
        }
Пример #2
0
        /// <summary>
        /// Create <see cref="CimSession"/> by given computer name
        /// and cimInstance. Then create wrapper object.
        /// </summary>
        /// <param name="computerName"></param>
        /// <param name="cimInstance"></param>
        public CimSessionProxy(string computerName, CimInstance cimInstance)
        {
            DebugHelper.WriteLogEx("ComputerName {0}; cimInstance.CimSessionInstanceID = {1}; cimInstance.CimSessionComputerName = {2}.",
                0,
                computerName,
                cimInstance.GetCimSessionInstanceId(),
                cimInstance.GetCimSessionComputerName());

            if (computerName != ConstValue.NullComputerName)
            {
                CreateSetSession(computerName, null, null, null, false);
                return;
            }

            Debug.Assert(cimInstance != null, "Caller should verify cimInstance != null");
            
            // computerName is null, fallback to create session from cimInstance
            CimSessionState state = CimSessionBase.GetCimSessionState();
            if (state != null)
            {
                CimSession session = state.QuerySession(cimInstance.GetCimSessionInstanceId());
                if (session != null)
                {
                    DebugHelper.WriteLogEx("Found the session from cache with InstanceID={0}.", 0, cimInstance.GetCimSessionInstanceId());
                    CreateSetSession(null, session, null, null, false);
                    return;
                }
            }
            String cimsessionComputerName = cimInstance.GetCimSessionComputerName();
            CreateSetSession(cimsessionComputerName, null, null, null, false);
            this.isDefaultSession = (cimsessionComputerName  == ConstValue.NullComputerName);

            DebugHelper.WriteLogEx("Create a temp session with computerName = {0}.", 0, cimsessionComputerName);
        }
Пример #3
0
        internal static object ConvertFromNativeLayer(
            MI_Value value,
            MI_Type type,
            MI_Flags flags,
            CimInstance parent = null,
            bool clone         = false)
        {
            if ((flags & MI_Flags.MI_FLAG_NULL) == MI_Flags.MI_FLAG_NULL)
            {
                return(null);
            }

            if (type == MI_Type.MI_INSTANCE || type == MI_Type.MI_REFERENCE)
            {
                CimInstance instance = new CimInstance(
                    clone ? value.Instance.Clone() : value.Instance);
                if (parent != null)
                {
                    instance.SetCimSessionComputerName(parent.GetCimSessionComputerName());
                    instance.SetCimSessionInstanceId(parent.GetCimSessionInstanceId());
                }
                return(instance);
            }
            else if (type == MI_Type.MI_INSTANCEA || type == MI_Type.MI_REFERENCEA)
            {
                CimInstance[] arrayOfInstances = new CimInstance[value.InstanceA.Length];
                for (int i = 0; i < value.InstanceA.Length; i++)
                {
                    MI_Instance h = value.InstanceA[i];
                    if (h == null)
                    {
                        arrayOfInstances[i] = null;
                    }
                    else
                    {
                        arrayOfInstances[i] = new CimInstance(
                            clone ? h.Clone() : h);
                        if (parent != null)
                        {
                            arrayOfInstances[i].SetCimSessionComputerName(parent.GetCimSessionComputerName());
                            arrayOfInstances[i].SetCimSessionInstanceId(parent.GetCimSessionInstanceId());
                        }
                    }
                }
                return(arrayOfInstances);
            }
            else if (type == MI_Type.MI_DATETIME)
            {
                return(value.Datetime.ConvertFromNativeLayer());
            }
            else if (type == MI_Type.MI_DATETIMEA)
            {
                int      length           = value.DatetimeA.Length;
                object[] arrayOfDatetimes = new object[length];
                for (int i = 0; i < length; i++)
                {
                    arrayOfDatetimes[i] = value.DatetimeA[i].ConvertFromNativeLayer();
                }
                return(arrayOfDatetimes);
            }
            else
            {
                return(value.GetValue(type));
            }
        }