Beispiel #1
0
        private void ConnectSessions(Collection <PSSession> psSessions)
        {
            List <IThrottleOperation> throttleOperations = new List <IThrottleOperation>();

            foreach (PSSession psSession in psSessions)
            {
                if (base.ShouldProcess(psSession.Name, "Connect"))
                {
                    if (psSession.Runspace.RunspaceStateInfo.State != RunspaceState.Disconnected || psSession.Runspace.RunspaceAvailability != RunspaceAvailability.None)
                    {
                        if (psSession.Runspace.RunspaceStateInfo.State == RunspaceState.Opened)
                        {
                            base.WriteObject(psSession);
                        }
                        else
                        {
                            string      str = StringUtil.Format(RemotingErrorIdStrings.RunspaceCannotBeConnected, psSession.Name);
                            Exception   runtimeException = new RuntimeException(str);
                            ErrorRecord errorRecord      = new ErrorRecord(runtimeException, "PSSessionConnectFailed", ErrorCategory.InvalidOperation, psSession);
                            base.WriteError(errorRecord);
                        }
                    }
                    else
                    {
                        this.UpdateConnectionInfo(psSession.Runspace.ConnectionInfo as WSManConnectionInfo);
                        ConnectPSSessionCommand.ConnectRunspaceOperation connectRunspaceOperation = new ConnectPSSessionCommand.ConnectRunspaceOperation(psSession, this.stream, base.Host, null, this.failedSessions);
                        throttleOperations.Add(connectRunspaceOperation);
                    }
                }
                this.allSessions.Add(psSession);
            }
            if (throttleOperations.Count > 0)
            {
                this.operationsComplete.Reset();
                this.throttleManager.SubmitOperations(throttleOperations);
                Collection <object> objs = this.stream.ObjectReader.NonBlockingRead();
                foreach (object obj in objs)
                {
                    base.WriteStreamObject((Action <Cmdlet>)obj);
                }
            }
        }
 private void ConnectSessions(Collection<PSSession> psSessions)
 {
     List<IThrottleOperation> throttleOperations = new List<IThrottleOperation>();
     foreach (PSSession psSession in psSessions)
     {
         if (base.ShouldProcess(psSession.Name, "Connect"))
         {
             if (psSession.Runspace.RunspaceStateInfo.State != RunspaceState.Disconnected || psSession.Runspace.RunspaceAvailability != RunspaceAvailability.None)
             {
                 if (psSession.Runspace.RunspaceStateInfo.State == RunspaceState.Opened)
                 {
                     base.WriteObject(psSession);
                 }
                 else
                 {
                     string str = StringUtil.Format(RemotingErrorIdStrings.RunspaceCannotBeConnected, psSession.Name);
                     Exception runtimeException = new RuntimeException(str);
                     ErrorRecord errorRecord = new ErrorRecord(runtimeException, "PSSessionConnectFailed", ErrorCategory.InvalidOperation, psSession);
                     base.WriteError(errorRecord);
                 }
             }
             else
             {
                 this.UpdateConnectionInfo(psSession.Runspace.ConnectionInfo as WSManConnectionInfo);
                 ConnectPSSessionCommand.ConnectRunspaceOperation connectRunspaceOperation = new ConnectPSSessionCommand.ConnectRunspaceOperation(psSession, this.stream, base.Host, null, this.failedSessions);
                 throttleOperations.Add(connectRunspaceOperation);
             }
         }
         this.allSessions.Add(psSession);
     }
     if (throttleOperations.Count > 0)
     {
         this.operationsComplete.Reset();
         this.throttleManager.SubmitOperations(throttleOperations);
         Collection<object> objs = this.stream.ObjectReader.NonBlockingRead();
         foreach (object obj in objs)
         {
             base.WriteStreamObject((Action<Cmdlet>)obj);
         }
     }
 }