internal virtual BaseClientCommandTransportManager CreateClientCommandTransportManager(
     RunspaceConnectionInfo connectionInfo,
     ClientRemotePowerShell cmd,
     bool noInput)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 2
0
 internal OutOfProcessClientCommandTransportManager(ClientRemotePowerShell cmd, bool noInput, OutOfProcessClientSessionTransportManager sessnTM, OutOfProcessTextWriter stdInWriter) : base(cmd, sessnTM.CryptoHelper, sessnTM)
 {
     this.stdInWriter = stdInWriter;
     this.onDataAvailableToSendCallback = new System.Management.Automation.Remoting.PrioritySendDataCollection.OnDataAvailableCallback(this.OnDataAvailableCallback);
     this.signalTimeOutTimer            = new Timer(60000.0);
     this.signalTimeOutTimer.Elapsed   += new ElapsedEventHandler(this.OnSignalTimeOutTimerElapsed);
 }
 internal override BaseClientCommandTransportManager CreateClientCommandTransportManager(
     RunspaceConnectionInfo connectionInfo,
     ClientRemotePowerShell cmd,
     bool noInput)
 {
     return((BaseClientCommandTransportManager) new WSManClientCommandTransportManager(connectionInfo as WSManConnectionInfo, this.wsManShellOperationHandle, cmd, noInput, this));
 }
Ejemplo n.º 4
0
        protected BaseClientCommandTransportManager(ClientRemotePowerShell shell, PSRemotingCryptoHelper cryptoHelper, BaseClientSessionTransportManager sessnTM) : base(sessnTM.RunspacePoolInstanceId, cryptoHelper)
        {
            RemoteDataObject obj2;

            base.Fragmentor.FragmentSize = sessnTM.Fragmentor.FragmentSize;
            base.Fragmentor.TypeTable    = sessnTM.Fragmentor.TypeTable;
            base.dataToBeSent.Fragmentor = base.Fragmentor;
            this.powershellInstanceId    = shell.PowerShell.InstanceId;
            this.cmdText = new StringBuilder();
            foreach (Command command in shell.PowerShell.Commands.Commands)
            {
                this.cmdText.Append(command.CommandText);
                this.cmdText.Append(" | ");
            }
            this.cmdText.Remove(this.cmdText.Length - 3, 3);
            if (shell.PowerShell.IsGetCommandMetadataSpecialPipeline)
            {
                obj2 = RemotingEncoder.GenerateGetCommandMetadata(shell);
            }
            else
            {
                obj2 = RemotingEncoder.GenerateCreatePowerShell(shell);
            }
            this.serializedPipeline = new SerializedDataStream(base.Fragmentor.FragmentSize);
            base.Fragmentor.Fragment <object>(obj2, this.serializedPipeline);
        }
Ejemplo n.º 5
0
        internal override BaseClientCommandTransportManager CreateClientCommandTransportManager(
            ClientRemotePowerShell cmd,
            bool noInput)
        {
            BaseClientCommandTransportManager transportManager = this._transportManager.CreateClientCommandTransportManager(this._connectionInfo, cmd, noInput);

            transportManager.DataReceived += new EventHandler <RemoteDataEventArgs>(this.DispatchInputQueueData);
            return(transportManager);
        }
Ejemplo n.º 6
0
        internal override BaseClientCommandTransportManager CreateClientCommandTransportManager(
            RunspaceConnectionInfo connectionInfo,
            ClientRemotePowerShell cmd,
            bool noInput)
        {
            OutOfProcessClientCommandTransportManager cmdTM = new OutOfProcessClientCommandTransportManager(cmd, noInput, this, this.stdInWriter);

            this.AddCommandTransportManager(cmd.InstanceId, cmdTM);
            return((BaseClientCommandTransportManager)cmdTM);
        }
Ejemplo n.º 7
0
 internal void CreatePowerShellOnServerAndInvoke(ClientRemotePowerShell shell)
 {
     using (ClientRunspacePoolDataStructureHandler.tracer.TraceMethod())
     {
         lock (this.associationSyncObject)
             this.associatedPowerShellDSHandlers.Add(shell.InstanceId, shell.DataStructureHandler);
         shell.DataStructureHandler.RemoveAssociation += new EventHandler(this.HandleRemoveAssociation);
         shell.DataStructureHandler.Start(this.remoteSession.SessionDataStructureHandler.StateMachine);
     }
 }
 internal WSManClientCommandTransportManager(
     WSManConnectionInfo connectionInfo,
     IntPtr wsManShellOperationHandle,
     ClientRemotePowerShell shell,
     bool noInput,
     WSManClientSessionTransportManager sessnTM)
     : base(shell, sessnTM.CryptoHelper, (BaseClientSessionTransportManager)sessnTM)
 {
     this.wsManShellOperationHandle = wsManShellOperationHandle;
     this.ReceivedDataCollection.MaximumReceivedDataSize   = connectionInfo.MaximumReceivedDataSizePerCommand;
     this.ReceivedDataCollection.MaximumReceivedObjectSize = connectionInfo.MaximumReceivedObjectSize;
     this.onDataAvailableToSendCallback = new PrioritySendDataCollection.OnDataAvailableCallback(this.OnDataAvailableCallback);
 }
Ejemplo n.º 9
0
        internal static RemoteDataObject GenerateGetCommandMetadata(
            ClientRemotePowerShell shell)
        {
            Command command1 = (Command)null;

            foreach (Command command2 in (Collection <Command>)shell.PowerShell.Commands.Commands)
            {
                if (command2.CommandText.Equals("Get-Command", StringComparison.OrdinalIgnoreCase))
                {
                    command1 = command2;
                    break;
                }
            }
            string[]     strArray1    = (string[])null;
            CommandTypes commandTypes = CommandTypes.Alias | CommandTypes.Function | CommandTypes.Filter | CommandTypes.Cmdlet;

            string[] strArray2 = (string[])null;
            object[] objArray  = (object[])null;
            foreach (CommandParameter parameter in (Collection <CommandParameter>)command1.Parameters)
            {
                if (parameter.Name.Equals("Name", StringComparison.OrdinalIgnoreCase))
                {
                    strArray1 = (string[])LanguagePrimitives.ConvertTo(parameter.Value, typeof(string[]), (IFormatProvider)CultureInfo.InvariantCulture);
                }
                else if (parameter.Name.Equals("CommandType", StringComparison.OrdinalIgnoreCase))
                {
                    commandTypes = (CommandTypes)LanguagePrimitives.ConvertTo(parameter.Value, typeof(CommandTypes), (IFormatProvider)CultureInfo.InvariantCulture);
                }
                else if (parameter.Name.Equals("Module", StringComparison.OrdinalIgnoreCase))
                {
                    strArray2 = (string[])LanguagePrimitives.ConvertTo(parameter.Value, typeof(string[]), (IFormatProvider)CultureInfo.InvariantCulture);
                }
                else if (parameter.Name.Equals("ArgumentList", StringComparison.OrdinalIgnoreCase))
                {
                    objArray = (object[])LanguagePrimitives.ConvertTo(parameter.Value, typeof(object[]), (IFormatProvider)CultureInfo.InvariantCulture);
                }
            }
            Guid     instanceId    = (shell.PowerShell.GetRunspaceConnection() as RunspacePool).InstanceId;
            PSObject emptyPsObject = RemotingEncoder.CreateEmptyPSObject();

            emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("Name", (object)strArray1));
            emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("CommandType", (object)commandTypes));
            emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("Namespace", (object)strArray2));
            emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("ArgumentList", (object)objArray));
            return(RemoteDataObject.CreateFrom(RemotingDestination.Server, RemotingDataType.GetCommandMetadata, instanceId, shell.InstanceId, (object)emptyPsObject));
        }
Ejemplo n.º 10
0
        internal static RemoteDataObject GenerateGetCommandMetadata(ClientRemotePowerShell shell)
        {
            Command command = null;

            foreach (Command command2 in shell.PowerShell.Commands.Commands)
            {
                if (command2.CommandText.Equals("Get-Command", StringComparison.OrdinalIgnoreCase))
                {
                    command = command2;
                    break;
                }
            }
            string[]     strArray = null;
            CommandTypes types    = CommandTypes.Cmdlet | CommandTypes.Filter | CommandTypes.Function | CommandTypes.Alias;

            string[] strArray2 = null;
            object[] objArray  = null;
            foreach (CommandParameter parameter in command.Parameters)
            {
                if (parameter.Name.Equals("Name", StringComparison.OrdinalIgnoreCase))
                {
                    strArray = (string[])LanguagePrimitives.ConvertTo(parameter.Value, typeof(string[]), CultureInfo.InvariantCulture);
                }
                else if (parameter.Name.Equals("CommandType", StringComparison.OrdinalIgnoreCase))
                {
                    types = (CommandTypes)LanguagePrimitives.ConvertTo(parameter.Value, typeof(CommandTypes), CultureInfo.InvariantCulture);
                }
                else if (parameter.Name.Equals("Module", StringComparison.OrdinalIgnoreCase))
                {
                    strArray2 = (string[])LanguagePrimitives.ConvertTo(parameter.Value, typeof(string[]), CultureInfo.InvariantCulture);
                }
                else if (parameter.Name.Equals("ArgumentList", StringComparison.OrdinalIgnoreCase))
                {
                    objArray = (object[])LanguagePrimitives.ConvertTo(parameter.Value, typeof(object[]), CultureInfo.InvariantCulture);
                }
            }
            RunspacePool runspaceConnection = shell.PowerShell.GetRunspaceConnection() as RunspacePool;
            Guid         instanceId         = runspaceConnection.InstanceId;
            PSObject     data = CreateEmptyPSObject();

            data.Properties.Add(new PSNoteProperty("Name", strArray));
            data.Properties.Add(new PSNoteProperty("CommandType", types));
            data.Properties.Add(new PSNoteProperty("Namespace", strArray2));
            data.Properties.Add(new PSNoteProperty("ArgumentList", objArray));
            return(RemoteDataObject.CreateFrom(RemotingDestination.InvalidDestination | RemotingDestination.Server, RemotingDataType.GetCommandMetadata, instanceId, shell.InstanceId, data));
        }
        internal void CreatePowerShellOnServerAndInvoke(ClientRemotePowerShell shell)
        {
            lock (this.associationSyncObject)
            {
                this.associatedPowerShellDSHandlers.Add(shell.InstanceId, shell.DataStructureHandler);
            }
            shell.DataStructureHandler.RemoveAssociation += new EventHandler(this.HandleRemoveAssociation);
            bool inDisconnectMode = (shell.Settings != null) ? shell.Settings.InvokeAndDisconnect : false;

            if (inDisconnectMode && !this.EndpointSupportsDisconnect)
            {
                throw new PSRemotingDataStructureException(RemotingErrorIdStrings.EndpointDoesNotSupportDisconnect);
            }
            if (this.remoteSession == null)
            {
                throw new ObjectDisposedException("ClientRunspacePoolDataStructureHandler");
            }
            shell.DataStructureHandler.Start(this.remoteSession.SessionDataStructureHandler.StateMachine, inDisconnectMode);
        }
Ejemplo n.º 12
0
        internal static RemoteDataObject GenerateCreatePowerShell(ClientRemotePowerShell shell)
        {
            HostInfo             info;
            PowerShell           powerShell   = shell.PowerShell;
            PSInvocationSettings settings     = shell.Settings;
            PSObject             data         = CreateEmptyPSObject();
            Guid           empty              = Guid.Empty;
            ApartmentState unknown            = ApartmentState.Unknown;
            RunspacePool   runspaceConnection = powerShell.GetRunspaceConnection() as RunspacePool;

            empty   = runspaceConnection.InstanceId;
            unknown = runspaceConnection.ApartmentState;
            data.Properties.Add(new PSNoteProperty("PowerShell", powerShell.ToPSObjectForRemoting()));
            data.Properties.Add(new PSNoteProperty("NoInput", shell.NoInput));
            if (settings == null)
            {
                info = new HostInfo(null)
                {
                    UseRunspaceHost = true
                };
                data.Properties.Add(new PSNoteProperty("ApartmentState", unknown));
                data.Properties.Add(new PSNoteProperty("RemoteStreamOptions", RemoteStreamOptions.AddInvocationInfo));
                data.Properties.Add(new PSNoteProperty("AddToHistory", false));
            }
            else
            {
                info = new HostInfo(settings.Host);
                if (settings.Host == null)
                {
                    info.UseRunspaceHost = true;
                }
                data.Properties.Add(new PSNoteProperty("ApartmentState", settings.ApartmentState));
                data.Properties.Add(new PSNoteProperty("RemoteStreamOptions", settings.RemoteStreamOptions));
                data.Properties.Add(new PSNoteProperty("AddToHistory", settings.AddToHistory));
            }
            PSNoteProperty member = CreateHostInfoProperty(info);

            data.Properties.Add(member);
            data.Properties.Add(new PSNoteProperty("IsNested", shell.PowerShell.IsNested));
            return(RemoteDataObject.CreateFrom(RemotingDestination.InvalidDestination | RemotingDestination.Server, RemotingDataType.CreatePowerShell, empty, shell.InstanceId, data));
        }
Ejemplo n.º 13
0
        internal static RemoteDataObject GenerateCreatePowerShell(
            ClientRemotePowerShell shell)
        {
            PowerShell           powerShell    = shell.PowerShell;
            PSInvocationSettings settings      = shell.Settings;
            PSObject             emptyPsObject = RemotingEncoder.CreateEmptyPSObject();
            Guid           empty = Guid.Empty;
            RunspacePool   runspaceConnection = powerShell.GetRunspaceConnection() as RunspacePool;
            Guid           instanceId         = runspaceConnection.InstanceId;
            ApartmentState apartmentState     = runspaceConnection.ApartmentState;

            emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("PowerShell", (object)powerShell.ToPSObjectForRemoting()));
            emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("NoInput", (object)shell.NoInput));
            HostInfo hostInfo;

            if (settings == null)
            {
                hostInfo = new HostInfo((PSHost)null);
                hostInfo.UseRunspaceHost = true;
                emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("ApartmentState", (object)apartmentState));
                emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("RemoteStreamOptions", (object)RemoteStreamOptions.AddInvocationInfo));
                emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("AddToHistory", (object)false));
            }
            else
            {
                hostInfo = new HostInfo(settings.Host);
                if (settings.Host == null)
                {
                    hostInfo.UseRunspaceHost = true;
                }
                emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("ApartmentState", (object)settings.ApartmentState));
                emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("RemoteStreamOptions", (object)settings.RemoteStreamOptions));
                emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("AddToHistory", (object)settings.AddToHistory));
            }
            PSNoteProperty hostInfoProperty = RemotingEncoder.CreateHostInfoProperty(hostInfo);

            emptyPsObject.Properties.Add((PSPropertyInfo)hostInfoProperty);
            return(RemoteDataObject.CreateFrom(RemotingDestination.Server, RemotingDataType.CreatePowerShell, instanceId, shell.InstanceId, (object)emptyPsObject));
        }
Ejemplo n.º 14
0
 private void HandleHostCallReceived(object sender, RemoteDataEventArgs <RemoteHostCall> eventArgs)
 {
     ClientRemotePowerShell.ExitHandler(sender, eventArgs);
 }
Ejemplo n.º 15
0
 internal WSManClientCommandTransportManager(WSManConnectionInfo connectionInfo, IntPtr wsManShellOperationHandle, ClientRemotePowerShell shell, bool noInput, WSManClientSessionTransportManager sessnTM) : base(shell, sessnTM.CryptoHelper, sessnTM)
 {
     this.wsManShellOperationHandle = wsManShellOperationHandle;
     base.ReceivedDataCollection.MaximumReceivedDataSize   = connectionInfo.MaximumReceivedDataSizePerCommand;
     base.ReceivedDataCollection.MaximumReceivedObjectSize = connectionInfo.MaximumReceivedObjectSize;
     this.cmdLine = shell.PowerShell.Commands.Commands.GetCommandStringForHistory();
     this.onDataAvailableToSendCallback = new System.Management.Automation.Remoting.PrioritySendDataCollection.OnDataAvailableCallback(this.OnDataAvailableCallback);
     this._sessnTm = sessnTM;
     sessnTM.RobustConnectionsInitiated += new EventHandler <EventArgs>(this.HandleRobustConnectionsIntiated);
     sessnTM.RobustConnectionsCompleted += new EventHandler <EventArgs>(this.HandleRobusConnectionsCompleted);
 }
Ejemplo n.º 16
0
 internal abstract BaseClientCommandTransportManager CreateClientCommandTransportManager(ClientRemotePowerShell cmd, bool noInput);
Ejemplo n.º 17
0
 internal ClientPowerShellDataStructureHandler CreatePowerShellDataStructureHandler(
     ClientRemotePowerShell shell)
 {
     using (ClientRunspacePoolDataStructureHandler.tracer.TraceMethod())
         return(new ClientPowerShellDataStructureHandler(this.remoteSession.SessionDataStructureHandler.CreateClientCommandTransportManager(shell, shell.NoInput), this.clientRunspacePoolId, shell.InstanceId));
 }