コード例 #1
0
        public static void WriteEntry(this IPsUserInterface logger, PsStreamEntry entry)
        {
            switch (entry.Type)
            {
            case PsStreamEntryType.Information:
                logger.WriteMessage(entry.Message);
                break;

            case PsStreamEntryType.Warning:
                logger.WriteWarning(entry.Message);
                break;

            case PsStreamEntryType.Error:
                logger.WriteError(entry.Message, null);
                break;

            case PsStreamEntryType.Verbose:
                logger.WriteVerbose(entry.Message);
                break;

            case PsStreamEntryType.Debug:
                logger.WriteDebug(entry.Message);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #2
0
 public SimplePsHost(IPsUserInterface psUserInterface, string name = "")
 {
     if (String.IsNullOrEmpty(name))
     {
         name = nameof(SimplePsHost);
     }
     Name            = name;
     PsUserInterface = psUserInterface;
     InstanceId      = Guid.NewGuid();
     UI = new SimplePsHostUserInterface(psUserInterface);
 }
コード例 #3
0
        public void Dump(IPsUserInterface otherLogger = null)
        {
            if (otherLogger == null)
            {
                otherLogger = OutputLogger;
            }

            foreach (var entry in Entries.OrderBy(e => e.Timestamp))
            {
                otherLogger.WriteEntry(entry);
            }

            if (ThrowAllErrors)
            {
                ThrowErrors();
            }
            Clear();
        }
コード例 #4
0
        public PsRunner(IPsUserInterface psUserInterface)
        {
            Logger        = psUserInterface;
            DiscardOutput = false;

            Host = new SimplePsHost(psUserInterface);
            var rs = RunspaceFactory.CreateRunspace(Host);

            PsInstance          = System.Management.Automation.PowerShell.Create();
            PsInstance.Runspace = rs;
            PsInstance.InvocationStateChanged += (s, e) => InvocationStateChanged?.Invoke(this, e);
            rs.Open();

            PsInstance.Streams.Debug.DataAdded += delegate(object s, DataAddedEventArgs e)
            {
                Logger.WriteDebug(PsInstance.Streams.Debug[e.Index].Message);
            };
            PsInstance.Streams.Error.DataAdded += delegate(object s, DataAddedEventArgs e)
            {
                var er = PsInstance.Streams.Error[e.Index];
                Logger.WriteError(er.Exception.GetExceptionMessage(), er.TargetObject);
            };
            PsInstance.Streams.Progress.DataAdded += delegate(object s, DataAddedEventArgs e)
            {
                var pr = PsInstance.Streams.Progress[e.Index];
                Logger.ReportProgress(pr.ActivityId, pr);
            };
            PsInstance.Streams.Verbose.DataAdded += delegate(object s, DataAddedEventArgs e)
            {
                Logger.WriteVerbose(PsInstance.Streams.Verbose[e.Index].Message);
            };
            PsInstance.Streams.Warning.DataAdded += delegate(object s, DataAddedEventArgs e)
            {
                Logger.WriteWarning(PsInstance.Streams.Warning[e.Index].Message);
            };
        }
コード例 #5
0
 public SimplePsHostUserInterface(IPsUserInterface ui)
 {
     Ui = ui;
 }
コード例 #6
0
 public BufferInterface(IPsUserInterface outputLogger)
 {
     ThrowAllErrors = true;
     Entries        = new List <PsStreamEntry>();
     OutputLogger   = outputLogger;
 }