public void FactoryShouldInitializeStartupCommands()
        {
            // Fixture setup
            var settings = new PowerShellWorkerSettings();

            settings.StartupCommands.Add(new GetProcessCommand());

            // Exercise system
            var worker   = (PowerShellWorker)PowerShellWorkerFactory.Create(settings);
            var executor = (PowerShellExecutor)worker.Executor;

            // Verify outcome
            executor.StartupCommands.Should().BeEquivalentTo(settings.StartupCommands.Select(c => c.ToNativeCommand()));
        }
        public void FactoryShouldInitializeShellName()
        {
            // Fixture setup
            var settings = new PowerShellWorkerSettings {
                ShellName = "Microsoft.Exchange"
            };

            // Exercise system
            var worker   = (PowerShellWorker)PowerShellWorkerFactory.Create(settings);
            var executor = (PowerShellExecutor)worker.Executor;

            // Verify outcome
            executor.ShellName.Should().Be(settings.ShellName);
        }
        public void FactoryShouldInitializeRemoteAddress()
        {
            // Fixture setup
            var settings = new PowerShellWorkerSettings {
                RemoteAddress = "http://ya.ru"
            };

            // Exercise system
            var worker   = (PowerShellWorker)PowerShellWorkerFactory.Create(settings);
            var executor = (PowerShellExecutor)worker.Executor;

            // Verify outcome
            executor.RemoteAddress.Should().Be(settings.RemoteAddress);
        }
        public void FactoryShouldInitializeSnapIns()
        {
            // Fixture setup
            var settings = new PowerShellWorkerSettings();

            settings.SnapIns.Add("SnapIn1");
            settings.SnapIns.Add("SnapIn2");

            // Exercise system
            var worker   = (PowerShellWorker)PowerShellWorkerFactory.Create(settings);
            var executor = (PowerShellExecutor)worker.Executor;

            // Verify outcome
            executor.SnapIns.Should().BeEquivalentTo(settings.SnapIns);
        }
        public static IPowerShellWorker Create([NotNull] PowerShellWorkerSettings settings)
        {
            Guard.CheckNull(settings, nameof(settings));

            logger.Debug("Create PowerShell worker with following settings {@Settings}.", settings);

            var executor = new PowerShellExecutor();

            executor.RemoteAddress = settings.RemoteAddress;
            executor.ShellName     = settings.ShellName;
            settings.Modules.ForEach(m => executor.Modules.Add(m));
            settings.SnapIns.ForEach(s => executor.SnapIns.Add(s));
            settings.StartupCommands.ForEach(c => executor.StartupCommands.Add(c.ToNativeCommand()));

            var worker = new PowerShellWorker(executor);

            return(worker);
        }
        public void FactoryWorkerTest()
        {
            // Fixture setup
            var command = new GetProcessCommand
            {
                ComputerName = Environment.MachineName
            };

            var settings = new PowerShellWorkerSettings {
                RemoteAddress = Environment.MachineName
            };

            var worker = PowerShellWorkerFactory.Create(settings);

            // Exercise system
            var results = worker.RunCommand(command);

            var sb = new StringBuilder();

            results.ForEach(r => sb.AppendLine(r));

            // Verify outcome
            WriteMessage(sb.ToString());
        }