예제 #1
0
 internal static RemoteDataObject GenerateCreateRunspacePool(
     Guid clientRunspacePoolId,
     int minRunspaces,
     int maxRunspaces,
     RemoteRunspacePoolInternal runspacePool,
     PSHost host,
     PSPrimitiveDictionary applicationArguments)
 {
     using (RemotingEncoder._trace.TraceMethod())
     {
         PSObject emptyPsObject = RemotingEncoder.CreateEmptyPSObject();
         emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("MinRunspaces", (object)minRunspaces));
         emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("MaxRunspaces", (object)maxRunspaces));
         emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("PSThreadOptions", (object)runspacePool.ThreadOptions));
         emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("ApartmentState", (object)runspacePool.ApartmentState));
         emptyPsObject.Properties.Add((PSPropertyInfo) new PSNoteProperty("ApplicationArguments", (object)applicationArguments));
         emptyPsObject.Properties.Add((PSPropertyInfo)RemotingEncoder.CreateHostInfoProperty(new HostInfo(host)));
         return(RemoteDataObject.CreateFrom(RemotingDestination.Server, RemotingDataType.CreateRunspacePool, clientRunspacePoolId, Guid.Empty, (object)emptyPsObject));
     }
 }
예제 #2
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));
        }