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); } }
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); } }
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; } }
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(); } } } } } }
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); } }
/// <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); } }
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; } } ); }
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); } }