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