Beispiel #1
0
        internal PSWmiChildJob(Cmdlet cmds, string computerName, ThrottleManager throttleManager, int count) : base(null, null)
        {
            this.syncObject            = new object();
            this.statusMessage         = "test";
            base.UsesResultsCollection = true;
            this.computerName          = computerName;
            this.throttleManager       = throttleManager;
            this.wmiSinkArray          = new ArrayList();
            ManagementOperationObserver managementOperationObserver = new ManagementOperationObserver();

            this.wmiSinkArray.Add(managementOperationObserver);
            PSWmiChildJob pSWmiChildJob = this;

            pSWmiChildJob.sinkCompleted              = pSWmiChildJob.sinkCompleted + count;
            managementOperationObserver.ObjectReady += new ObjectReadyEventHandler(this.NewObject);
            managementOperationObserver.Completed   += new CompletedEventHandler(this.JobDone);
            this.helper = new WmiAsyncCmdletHelper(this, cmds, computerName, managementOperationObserver, count);
            this.helper.WmiOperationState += new EventHandler <WmiJobStateEventArgs>(this.HandleWMIState);
            this.helper.ShutdownComplete  += new EventHandler <EventArgs>(this.JobDoneForWin32Shutdown);
            base.SetJobState(JobState.NotStarted);
            IThrottleOperation throttleOperation = this.helper;

            throttleOperation.OperationComplete += new EventHandler <OperationStateEventArgs>(this.HandleOperationComplete);
            throttleManager.ThrottleComplete    += new EventHandler <EventArgs>(this.HandleThrottleComplete);
            throttleManager.AddOperation(throttleOperation);
        }
Beispiel #2
0
        internal List <Job> GetJobsForOperation(IThrottleOperation operation)
        {
            List <Job>            list   = new List <Job>();
            ExecutionCmdletHelper helper = operation as ExecutionCmdletHelper;

            foreach (Job job in base.ChildJobs)
            {
                PSRemotingChildJob item = job as PSRemotingChildJob;
                if ((job != null) && item.Helper.Equals(helper))
                {
                    list.Add(item);
                }
            }
            return(list);
        }
Beispiel #3
0
 internal List <Job> GetJobsForOperation(IThrottleOperation operation)
 {
     using (PSRemotingJob.tracer.TraceMethod())
     {
         List <Job>            jobList = new List <Job>();
         ExecutionCmdletHelper executionCmdletHelper = operation as ExecutionCmdletHelper;
         foreach (Job childJob in (IEnumerable <Job>) this.ChildJobs)
         {
             PSRemotingChildJob remotingChildJob = childJob as PSRemotingChildJob;
             if (childJob != null && remotingChildJob.Helper.Equals((object)executionCmdletHelper))
             {
                 jobList.Add((Job)remotingChildJob);
             }
         }
         return(jobList);
     }
 }
Beispiel #4
0
        protected void AggregateResultsFromHelper(ExecutionCmdletHelper helper)
        {
            Pipeline pipeline = helper.Pipeline;

            pipeline.Output.DataReady += new EventHandler(this.HandleOutputReady);
            pipeline.Error.DataReady  += new EventHandler(this.HandleErrorReady);
            pipeline.StateChanged     += new EventHandler <PipelineStateEventArgs>(this.HandlePipelineStateChanged);
            RemotePipeline pipeline2 = pipeline as RemotePipeline;

            pipeline2.MethodExecutorStream.DataReady        += new EventHandler(this.HandleHostCalls);
            pipeline2.PowerShell.Streams.Progress.DataAdded += new EventHandler <DataAddedEventArgs>(this.HandleProgressAdded);
            pipeline2.PowerShell.Streams.Warning.DataAdded  += new EventHandler <DataAddedEventArgs>(this.HandleWarningAdded);
            pipeline2.PowerShell.Streams.Verbose.DataAdded  += new EventHandler <DataAddedEventArgs>(this.HandleVerboseAdded);
            pipeline2.PowerShell.Streams.Debug.DataAdded    += new EventHandler <DataAddedEventArgs>(this.HandleDebugAdded);
            pipeline2.IsMethodExecutorStreamEnabled          = true;
            IThrottleOperation operation = helper;

            operation.OperationComplete += new EventHandler <OperationStateEventArgs>(this.HandleOperationComplete);
        }
Beispiel #5
0
        internal PSRemotingChildJob(ExecutionCmdletHelper helper, ThrottleManager throttleManager, bool aggregateResults = false)
        {
            this.hideComputerName      = true;
            this.SyncObject            = new object();
            base.UsesResultsCollection = true;
            this.helper          = helper;
            this.remotePipeline  = helper.Pipeline as RemotePipeline;
            this.remoteRunspace  = helper.Pipeline.Runspace;
            this.throttleManager = throttleManager;
            if (aggregateResults)
            {
                this.AggregateResultsFromHelper(helper);
            }
            else
            {
                this.remotePipeline.StateChanged     += new EventHandler <PipelineStateEventArgs>(this.HandlePipelineStateChanged);
                this.remotePipeline.Output.DataReady += new EventHandler(this.HandleOutputReady);
                this.remotePipeline.Error.DataReady  += new EventHandler(this.HandleErrorReady);
            }
            IThrottleOperation operation = helper;

            operation.OperationComplete += new EventHandler <OperationStateEventArgs>(this.HandleOperationComplete);
            base.SetJobState(JobState.Disconnected, null);
        }