internal virtual BaseClientCommandTransportManager CreateClientCommandTransportManager( RunspaceConnectionInfo connectionInfo, ClientRemotePowerShell cmd, bool noInput) { throw new NotImplementedException(); }
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)); }
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); }
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); }
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); }
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); }
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)); }
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); }
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)); }
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)); }
private void HandleHostCallReceived(object sender, RemoteDataEventArgs <RemoteHostCall> eventArgs) { ClientRemotePowerShell.ExitHandler(sender, eventArgs); }
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); }
internal abstract BaseClientCommandTransportManager CreateClientCommandTransportManager(ClientRemotePowerShell cmd, bool noInput);
internal ClientPowerShellDataStructureHandler CreatePowerShellDataStructureHandler( ClientRemotePowerShell shell) { using (ClientRunspacePoolDataStructureHandler.tracer.TraceMethod()) return(new ClientPowerShellDataStructureHandler(this.remoteSession.SessionDataStructureHandler.CreateClientCommandTransportManager(shell, shell.NoInput), this.clientRunspacePoolId, shell.InstanceId)); }