Example #1
0
        private void HandleCreateAndInvokePowerShell(object sender, RemoteDataEventArgs <RemoteDataObject <PSObject> > eventArgs)
        {
            RemoteDataObject <PSObject> data        = eventArgs.Data;
            HostInfo            hostInfo            = RemotingDecoder.GetHostInfo(data.Data);
            ApartmentState      apartmentState      = RemotingDecoder.GetApartmentState(data.Data);
            RemoteStreamOptions remoteStreamOptions = RemotingDecoder.GetRemoteStreamOptions(data.Data);

            PowerShell powerShell   = RemotingDecoder.GetPowerShell(data.Data);
            bool       noInput      = RemotingDecoder.GetNoInput(data.Data);
            bool       addToHistory = RemotingDecoder.GetAddToHistory(data.Data);
            bool       isNested     = false;

            if (this.serverCapability.ProtocolVersion >= RemotingConstants.ProtocolVersionWin8RTM)
            {
                isNested = RemotingDecoder.GetIsNested(data.Data);
            }
            if (isNested)
            {
                if (this.dsHandler.GetAssociatedPowerShellDataStructureHandler(powerShell.InstanceId) != null)
                {
                    throw new InvalidOperationException("NestedPipeline is not supported in this release.");
                }
                powerShell.SetIsNested(false);
                if ((this.localRunspacePool.GetMaxRunspaces() == 1) && (this.dsHandler.GetPowerShellDataStructureHandler() != null))
                {
                    new ServerSteppablePipelineDriver(powerShell, noInput, data.PowerShellId, data.RunspacePoolId, this, apartmentState, hostInfo, remoteStreamOptions, addToHistory, this.rsToUseForSteppablePipeline, this.eventSubscriber, this.inputCollection).Start();
                    return;
                }
            }
            ServerPowerShellDriver driver2 = new ServerPowerShellDriver(powerShell, null, noInput, data.PowerShellId, data.RunspacePoolId, this, apartmentState, hostInfo, remoteStreamOptions, addToHistory, null);

            this.inputCollection = driver2.InputCollection;
            driver2.Start();
        }
 private void HandleCreateAndInvokePowerShell(
     object sender,
     RemoteDataEventArgs <RemoteDataObject <PSObject> > eventArgs)
 {
     using (ServerRunspacePoolDriver.tracer.TraceEventHandlers())
     {
         RemoteDataObject <PSObject> data        = eventArgs.Data;
         HostInfo            hostInfo            = RemotingDecoder.GetHostInfo(data.Data);
         ApartmentState      apartmentState      = RemotingDecoder.GetApartmentState((object)data.Data);
         RemoteStreamOptions remoteStreamOptions = RemotingDecoder.GetRemoteStreamOptions((object)data.Data);
         PowerShell          powerShell          = RemotingDecoder.GetPowerShell((object)data.Data);
         bool noInput      = RemotingDecoder.GetNoInput((object)data.Data);
         bool addToHistory = RemotingDecoder.GetAddToHistory((object)data.Data);
         new ServerPowerShellDriver(powerShell, (PowerShell)null, noInput, data.PowerShellId, data.RunspacePoolId, this, apartmentState, hostInfo, remoteStreamOptions, addToHistory, (Runspace)null).Start();
     }
 }