コード例 #1
0
        private void OnNext(CimMethodStreamedResult streamedResult)
        {
            MethodParameter methodParameter = base.GetMethodOutputParameters().SingleOrDefault <MethodParameter>((MethodParameter p) => p.Name.Equals(streamedResult.ParameterName, StringComparison.OrdinalIgnoreCase));

            if (methodParameter != null)
            {
                IEnumerable enumerable = LanguagePrimitives.GetEnumerable(streamedResult.ItemValue);
                if (enumerable == null)
                {
                    this.WriteObject(streamedResult.ItemValue, methodParameter);
                }
                else
                {
                    foreach (object obj in enumerable)
                    {
                        this.WriteObject(obj, methodParameter);
                    }
                }
                return;
            }
            else
            {
                object[] methodSubject = new object[3];
                methodSubject[0] = base.MethodSubject;
                methodSubject[1] = base.MethodName;
                methodSubject[2] = streamedResult.ParameterName;
                string str = string.Format(CultureInfo.InvariantCulture, CmdletizationResources.CimJob_InvalidOutputParameterName, methodSubject);
                throw CimJobException.CreateWithFullControl(base.JobContext, str, "CimJob_InvalidOutputParameterName", ErrorCategory.MetadataError, null);
            }
        }
コード例 #2
0
        private void OnNext(CimMethodStreamedResult streamedResult)
        {
            MethodParameter methodParameter = this.GetMethodOutputParameters()
                                              .SingleOrDefault(p => p.Name.Equals(streamedResult.ParameterName, StringComparison.OrdinalIgnoreCase));

            if (methodParameter == null)
            {
                string errorMessage = string.Format(
                    CultureInfo.InvariantCulture,
                    CmdletizationResources.CimJob_InvalidOutputParameterName,
                    this.MethodSubject,
                    this.MethodName,
                    streamedResult.ParameterName);

                throw CimJobException.CreateWithFullControl(
                          this.JobContext,
                          errorMessage,
                          "CimJob_InvalidOutputParameterName",
                          ErrorCategory.MetadataError);
            }

            var array = LanguagePrimitives.GetEnumerable(streamedResult.ItemValue);

            if (array != null)
            {
                foreach (var element in array)
                {
                    this.WriteObject(element, methodParameter);
                }
            }
            else
            {
                this.WriteObject(streamedResult.ItemValue, methodParameter);
            }
        }
コード例 #3
0
        public void OnNext(T value)
        {
            CimInstance instance = value as CimInstance;

            if (instance != null)
            {
                SampleCimOperation.PrintCimInstance(instance);
                return;
            }

            CimMethodResult methodResult = value as CimMethodResult;

            if (methodResult != null)
            {
                SampleCimOperation.PrintCimMethodResult(methodResult);
                return;
            }

            CimMethodStreamedResult methodStreamResult = value as CimMethodStreamedResult;

            if (methodStreamResult != null)
            {
                SampleCimOperation.PrintCimMethodStreamResult(methodStreamResult);
            }

            CimSubscriptionResult subscriptionResult = value as CimSubscriptionResult;

            if (subscriptionResult != null)
            {
                SampleCimOperation.PrintCimInstance(subscriptionResult.Instance);
                return;
            }
        }
コード例 #4
0
        internal void StreamedParameterCallback(OperationCallbackProcessingContext callbackProcessingContext, OperationHandle operationHandle, string parameterName, object parameterValue, MiType parameterType)
        {
            parameterValue = CimInstance.ConvertFromNativeLayer(parameterValue, null, null, !this._shortenLifetimeOfResults);
            CimInstance cimInstance = parameterValue as CimInstance;

            if (cimInstance != null)
            {
                cimInstance.SetCimSessionComputerName(this._CimSessionComputerName);
                cimInstance.SetCimSessionInstanceId(this._CimSessionInstanceID);
            }
            CimInstance[] cimInstanceArray = parameterValue as CimInstance[];
            if (cimInstanceArray != null)
            {
                CimInstance[] cimInstanceArray1 = cimInstanceArray;
                for (int i = 0; i < (int)cimInstanceArray1.Length; i++)
                {
                    CimInstance cimInstance1 = cimInstanceArray1[i];
                    if (cimInstance1 != null)
                    {
                        cimInstance1.SetCimSessionComputerName(this._CimSessionComputerName);
                        cimInstance1.SetCimSessionInstanceId(this._CimSessionInstanceID);
                    }
                }
            }
            try
            {
                CimMethodResultBase cimMethodStreamedResult = new CimMethodStreamedResult(parameterName, parameterValue, parameterType.ToCimType());
                base.ProcessNativeCallback(callbackProcessingContext, cimMethodStreamedResult, true, MiResult.OK, null, null);
            }
            finally
            {
                if (this._shortenLifetimeOfResults)
                {
                    CimInstance cimInstance2 = parameterValue as CimInstance;
                    if (cimInstance2 != null)
                    {
                        cimInstance2.Dispose();
                    }
                    CimInstance[] cimInstanceArray2 = parameterValue as CimInstance[];
                    if (cimInstanceArray2 != null)
                    {
                        CimInstance[] cimInstanceArray3 = cimInstanceArray2;
                        for (int j = 0; j < (int)cimInstanceArray3.Length; j++)
                        {
                            CimInstance cimInstance3 = cimInstanceArray3[j];
                            if (cimInstance3 != null)
                            {
                                cimInstance3.Dispose();
                            }
                        }
                    }
                }
            }
        }
コード例 #5
0
        public static void PrintCimMethodStreamResult(CimMethodStreamedResult methodStreamResult)
        {
            //Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine("Printing method stream output ...");
            //Console.ResetColor();
            Console.WriteLine(
                "ParameterName : {0} , ParameterType : {1} , ParameterValue : {2}",
                methodStreamResult.ParameterName,
                methodStreamResult.ItemType,
                methodStreamResult.ItemValue);
            CimInstance cimInstance = methodStreamResult.ItemValue as CimInstance;

            if (cimInstance != null)
            {
                PrintCimInstance(cimInstance);
            }
        }
コード例 #6
0
        /// <summary>
        /// Override the OnNext method.
        /// </summary>
        /// <param name="value"></param>
        public override void OnNext(CimMethodResultBase value)
        {
            DebugHelper.WriteLogEx();
            const string PSTypeCimMethodResult         = @"Microsoft.Management.Infrastructure.CimMethodResult";
            const string PSTypeCimMethodStreamedResult = @"Microsoft.Management.Infrastructure.CimMethodStreamedResult";
            const string PSTypeCimMethodResultTemplate = @"{0}#{1}#{2}";

            string          resultObjectPSType = null;
            PSObject        resultObject       = null;
            CimMethodResult methodResult       = value as CimMethodResult;

            if (methodResult != null)
            {
                resultObjectPSType = PSTypeCimMethodResult;
                resultObject       = new PSObject();
                foreach (CimMethodParameter param in methodResult.OutParameters)
                {
                    resultObject.Properties.Add(new PSNoteProperty(param.Name, param.Value));
                }
            }
            else
            {
                CimMethodStreamedResult methodStreamedResult = value as CimMethodStreamedResult;
                if (methodStreamedResult != null)
                {
                    resultObjectPSType = PSTypeCimMethodStreamedResult;
                    resultObject       = new PSObject();
                    resultObject.Properties.Add(new PSNoteProperty(@"ParameterName", methodStreamedResult.ParameterName));
                    resultObject.Properties.Add(new PSNoteProperty(@"ItemType", methodStreamedResult.ItemType));
                    resultObject.Properties.Add(new PSNoteProperty(@"ItemValue", methodStreamedResult.ItemValue));
                }
            }

            if (resultObject != null)
            {
                resultObject.Properties.Add(new PSNoteProperty(@"PSComputerName", this.CurrentSession.ComputerName));
                resultObject.TypeNames.Insert(0, resultObjectPSType);
                resultObject.TypeNames.Insert(0, string.Format(CultureInfo.InvariantCulture, PSTypeCimMethodResultTemplate, resultObjectPSType, ClassName, MethodName));
                base.OnNextCore(resultObject);
            }
        }
コード例 #7
0
 public override void OnNext(CimMethodResultBase item)
 {
     base.ExceptionSafeWrapper(() => {
         CimMethodResult cimMethodResult = item as CimMethodResult;
         if (cimMethodResult == null)
         {
             CimMethodStreamedResult cimMethodStreamedResult = item as CimMethodStreamedResult;
             if (cimMethodStreamedResult != null)
             {
                 this.OnNext(cimMethodStreamedResult);
             }
             return;
         }
         else
         {
             this.OnNext(cimMethodResult);
             return;
         }
     }
                               );
 }
コード例 #8
0
        public override void OnNext(CimMethodResultBase value)
        {
            DebugHelper.WriteLogEx();
            string          str             = null;
            PSObject        pSObject        = null;
            CimMethodResult cimMethodResult = value as CimMethodResult;

            if (cimMethodResult == null)
            {
                CimMethodStreamedResult cimMethodStreamedResult = value as CimMethodStreamedResult;
                if (cimMethodStreamedResult != null)
                {
                    str      = "Microsoft.Management.Infrastructure.CimMethodStreamedResult";
                    pSObject = new PSObject();
                    pSObject.Properties.Add(new PSNoteProperty("ParameterName", cimMethodStreamedResult.ParameterName));
                    pSObject.Properties.Add(new PSNoteProperty("ItemType", (object)cimMethodStreamedResult.ItemType));
                    pSObject.Properties.Add(new PSNoteProperty("ItemValue", cimMethodStreamedResult.ItemValue));
                }
            }
            else
            {
                str      = "Microsoft.Management.Infrastructure.CimMethodResult";
                pSObject = new PSObject();
                foreach (CimMethodParameter outParameter in cimMethodResult.OutParameters)
                {
                    pSObject.Properties.Add(new PSNoteProperty(outParameter.Name, outParameter.Value));
                }
            }
            if (pSObject != null)
            {
                pSObject.Properties.Add(new PSNoteProperty("PSComputerName", base.CurrentSession.ComputerName));
                pSObject.TypeNames.Insert(0, str);
                object[] className = new object[3];
                className[0] = str;
                className[1] = this.ClassName;
                className[2] = this.MethodName;
                pSObject.TypeNames.Insert(0, string.Format(CultureInfo.InvariantCulture, "{0}#{1}#{2}", className));
                base.OnNextCore(pSObject);
            }
        }