コード例 #1
0
        public override async Task ExecuteAsync(InstanceDetailsViewModel model)
        {
            if (LicenseChecks)
            {
                var licenseCheckResult = serviceControlInstaller.CheckLicenseIsValid();
                if (!licenseCheckResult.Valid)
                {
                    windowManager.ShowMessage("LICENSE ERROR", $"Upgrade could not continue due to an issue with the current license. {licenseCheckResult.Message}.  Contact [email protected]", hideCancel: true);
                    return;
                }
            }

            var instance = InstanceFinder.FindInstanceByName <ServiceControlAuditInstance>(model.Name);

            instance.Service.Refresh();

            var upgradeInfo    = UpgradeControl.GetUpgradeInfoForTargetVersion(serviceControlInstaller.ZipInfo.Version, instance.Version);
            var upgradeOptions = new ServiceControlUpgradeOptions {
                UpgradeInfo = upgradeInfo
            };

            if (instance.Service.Status != ServiceControllerStatus.Stopped &&
                !windowManager.ShowYesNoDialog($"STOP INSTANCE AND UPGRADE TO {serviceControlInstaller.ZipInfo.Version}",
                                               $"{model.Name} needs to be stopped in order to upgrade to version {serviceControlInstaller.ZipInfo.Version}.",
                                               "Do you want to proceed?",
                                               "Yes, I want to proceed", "No"))
            {
                return;
            }

            await UpgradeAuditInstance(model, instance, upgradeOptions);

            eventAggregator.PublishOnUIThread(new RefreshInstances());
        }
コード例 #2
0
        public void ChangeConfigTests()
        {
            var logger    = new TestLogger();
            var installer = new UnattendServiceControlInstaller(logger, DeploymentCache);

            logger.Info("Deleting instances");
            DeleteInstance();

            logger.Info("Removing the test queue instances");
            RemoveAltMSMQQueues();

            logger.Info("Recreating the MSMQ instance");
            CreateInstanceMSMQ();

            logger.Info("Changing the URLACL");
            var msmqTestInstance = InstanceFinder.ServiceControlInstances().First(p => p.Name.Equals("Test.ServiceControl.MSMQ", StringComparison.OrdinalIgnoreCase));

            msmqTestInstance.HostName = Environment.MachineName;
            msmqTestInstance.Port     = 33338;
            installer.Update(msmqTestInstance, true);
            Assert.IsTrue(msmqTestInstance.Service.Status == ServiceControllerStatus.Running, "Update URL change failed");

            logger.Info("Changing LogPath");
            msmqTestInstance         = InstanceFinder.ServiceControlInstances().First(p => p.Name.Equals("Test.ServiceControl.MSMQ", StringComparison.OrdinalIgnoreCase));
            msmqTestInstance.LogPath = @"c:\temp\testloggingchange";
            installer.Update(msmqTestInstance, true);
            Assert.IsTrue(msmqTestInstance.Service.Status == ServiceControllerStatus.Running, "Update Logging changed failed");

            logger.Info("Updating Queue paths");
            msmqTestInstance            = InstanceFinder.ServiceControlInstances().First(p => p.Name.Equals("Test.ServiceControl.MSMQ", StringComparison.OrdinalIgnoreCase));
            msmqTestInstance.AuditQueue = "alternateAudit";
            msmqTestInstance.ErrorQueue = "alternateError";
            installer.Update(msmqTestInstance, true);
            Assert.IsTrue(msmqTestInstance.Service.Status == ServiceControllerStatus.Running, "Update Queues changed failed");
        }
        protected override void ProcessRecord()
        {
            var psPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(UnattendFile, out _, out _);

            var details = ServiceControlNewInstance.Load(psPath);

            details.ServiceAccount    = ServiceAccount;
            details.ServiceAccountPwd = Password;
            var zipfolder = Path.GetDirectoryName(MyInvocation.MyCommand.Module.Path);
            var logger    = new PSLogger(Host);
            var installer = new UnattendServiceControlInstaller(logger, zipfolder);

            try
            {
                logger.Info("Installing Service Control instance...");
                if (installer.Add(details, PromptToProceed))
                {
                    var instance = InstanceFinder.FindServiceControlInstance(details.Name);
                    if (instance != null)
                    {
                        WriteObject(PsServiceControl.FromInstance(instance));
                    }
                    else
                    {
                        throw new Exception("Unknown error creating instance");
                    }
                }
            }
            catch (Exception ex)
            {
                ThrowTerminatingError(new ErrorRecord(ex, null, ErrorCategory.NotSpecified, null));
            }
        }
コード例 #4
0
        public MonitoringAddViewModel()
        {
            DisplayName = "ADD MONITORING INSTANCE";

            SelectDestinationPath = new SelectPathCommand(p => DestinationPath = p, isFolderPicker: true, defaultPath: DestinationPath);
            SelectLogPath         = new SelectPathCommand(p => LogPath = p, isFolderPicker: true, defaultPath: LogPath);

            var monitoringInstances = InstanceFinder.MonitoringInstances();

            if (!monitoringInstances.Any())
            {
                InstanceName = "Particular.Monitoring";
                PortNumber   = "33633";
            }
            else
            {
                var i = 0;
                while (true)
                {
                    InstanceName = $"Particular.Monitoring.{++i}";
                    if (!monitoringInstances.Any(p => p.Name.Equals(InstanceName, StringComparison.OrdinalIgnoreCase)))
                    {
                        break;
                    }
                }
            }
            Description      = "A Monitoring Instance";
            HostName         = "localhost";
            ErrorQueueName   = "error";
            UseSystemAccount = true;
        }
        protected override void ProcessRecord()
        {
            var logger = new PSLogger(Host);

            var zipFolder = Path.GetDirectoryName(MyInvocation.MyCommand.Module.Path);
            var installer = new UnattendServiceControlInstaller(logger, zipFolder);

            var instance = InstanceFinder.FindInstanceByName <ServiceControlInstance>(Name);

            if (instance == null)
            {
                WriteWarning($"No action taken. An instance called {Name} was not found");
                return;
            }

            var requiredUpgradeAction = instance.GetRequiredUpgradeAction(installer.ZipInfo.Version);

            switch (requiredUpgradeAction)
            {
            case RequiredUpgradeAction.Upgrade:
                PerformUpgrade(instance, installer);
                break;

            case RequiredUpgradeAction.SplitOutAudit:
                PerformSplit(instance, logger, zipFolder);
                break;

            default:
                ThrowTerminatingError(new ErrorRecord(new Exception($"Upgrade of {instance.Name} aborted. This instance cannot be upgraded."), "UpgradeFailure", ErrorCategory.InvalidResult, null));
                break;
            }
        }
コード例 #6
0
        public static List <string> UsedPaths(string instanceName = null)
        {
            var monitoringInstances          = InstanceFinder.MonitoringInstances();
            var serviceControlAuditInstances = InstanceFinder.ServiceControlAuditInstances();
            var serviceControlInstances      = InstanceFinder.ServiceControlInstances();
            var result = new List <string>();

            result.AddRange(monitoringInstances
                            .Where(p => string.IsNullOrWhiteSpace(instanceName) || p.Name != instanceName)
                            .SelectMany(p => new[]
            {
                p.LogPath,
                p.InstallPath
            }));

            result.AddRange(serviceControlAuditInstances
                            .Where(p => string.IsNullOrWhiteSpace(instanceName) || p.Name != instanceName)
                            .SelectMany(p => new[]
            {
                p.LogPath,
                p.DBPath,
                p.InstallPath
            }));

            result.AddRange(serviceControlInstances
                            .Where(p => string.IsNullOrWhiteSpace(instanceName) || p.Name != instanceName)
                            .SelectMany(p => new[]
            {
                p.LogPath,
                p.DBPath,
                p.InstallPath
            }));

            return(result.Distinct().ToList());
        }
コード例 #7
0
        public static List <string> UsedPorts(string instanceName = null)
        {
            var monitoringInstances          = InstanceFinder.MonitoringInstances();
            var serviceControlAuditInstances = InstanceFinder.ServiceControlAuditInstances();
            var serviceControlInstances      = InstanceFinder.ServiceControlInstances();
            var result = new List <string>();

            result.AddRange(monitoringInstances
                            .Where(p => string.IsNullOrWhiteSpace(instanceName) || p.Name != instanceName)
                            .Select(p => p.Port.ToString()));

            result.AddRange(serviceControlInstances
                            .Where(p => string.IsNullOrWhiteSpace(instanceName) || p.Name != instanceName)
                            .SelectMany(p => new[]
            {
                p.Port.ToString(),
                p.DatabaseMaintenancePort.ToString()
            }));

            result.AddRange(serviceControlAuditInstances
                            .Where(p => string.IsNullOrWhiteSpace(instanceName) || p.Name != instanceName)
                            .SelectMany(p => new[]
            {
                p.Port.ToString(),
                p.DatabaseMaintenancePort.ToString()
            }));

            return(result.Distinct().ToList());
        }
コード例 #8
0
        protected SharedServiceControlEditorViewModelValidator()
        {
            ServiceControlInstances = InstanceFinder.ServiceControlInstances();

            RuleFor(x => x.InstanceName)
            .NotEmpty()
            .MustNotContainWhitespace()
            .When(x => x.SubmitAttempted);

            RuleFor(x => x.HostName)
            .NotEmpty().When(x => x.SubmitAttempted);

            RuleFor(x => x.PortNumber)
            .NotEmpty()
            .ValidPort()
            .MustNotBeIn(x => UsedPorts(x.InstanceName))
            .WithMessage(Validations.MSG_MUST_BE_UNIQUE, "Ports")
            .When(x => x.SubmitAttempted);

            RuleFor(x => x.LogPath)
            .NotEmpty()
            .ValidPath()
            .MustNotBeIn(x => UsedPaths(x.InstanceName))
            .WithMessage(Validations.MSG_MUST_BE_UNIQUE, "Paths")
            .When(x => x.SubmitAttempted);
        }
コード例 #9
0
 private void RefreshInstances()
 {
     Instances.Clear();
     foreach (var item in InstanceFinder.AllInstances())
     {
         Instances.Add(instanceDetailsFunc(item));
     }
 }
コード例 #10
0
 public void Handle(ResetInstances message)
 {
     Instances.Clear();
     foreach (var item in InstanceFinder.AllInstances())
     {
         Instances.Add(instanceDetailsFunc(item));
     }
 }
コード例 #11
0
        public static ActionResult ServiceControlInstanceCount(Session session)
        {
            var instanceCount = InstanceFinder.ServiceControlInstances().Count +
                                InstanceFinder.MonitoringInstances().Count;

            session["SCINSTANCECOUNT"] = instanceCount.ToString();
            return(ActionResult.Success);
        }
コード例 #12
0
        public static void Validate(ServiceControlInstance instance)
        {
            var validator = new ServiceControlQueueNameValidator(instance)
            {
                Instances = InstanceFinder.ServiceControlInstances().Where(p => p.Name != instance.Name & p.TransportPackage.Equals(instance.TransportPackage, StringComparison.OrdinalIgnoreCase)).AsEnumerable <IServiceControlTransportConfig>().ToList()
            };

            validator.RunValidation();
        }
コード例 #13
0
        void RefreshInstances()
        {
            var missingInstances = InstanceFinder.AllInstances().Where(i => !Instances.Any(existingInstance => existingInstance.Name == i.Name));

            foreach (var item in missingInstances)
            {
                Instances.Add(instanceDetailsFunc(item));
            }
        }
コード例 #14
0
 public void Handle(ResetInstances message)
 {
     Instances.Clear();
     foreach (var item in InstanceFinder.AllInstances().OrderBy(i => i.Name))
     {
         Instances.Add(instanceDetailsFunc(item));
     }
     NotifyOfPropertyChange(nameof(OrderedInstances));
 }
コード例 #15
0
        public void DeleteInstance()
        {
            var installer = new UnattendServiceControlInstaller(new TestLogger(), DeploymentCache);

            foreach (var instance in InstanceFinder.ServiceControlInstances().Where(p => p.Name.StartsWith("Test.ServiceControl", StringComparison.OrdinalIgnoreCase)))
            {
                installer.Delete(instance.Name, true, true);
            }
        }
            public MaintenancePortValidator()
            {
                ServiceControlInstances = InstanceFinder.ServiceControlInstances();

                RuleFor(x => x.Value)
                .NotEmpty()
                .ValidPort()
                .MustNotBeIn(x => UsedPorts())
                .WithMessage(Validations.MSG_MUST_BE_UNIQUE, "Ports");
            }
コード例 #17
0
        public static void Validate(IServiceControlAuditInstance instance)
        {
            var validator = new QueueNameValidator(instance)
            {
                SCInstances    = InstanceFinder.ServiceControlInstances().Where(p => p.Name != instance.Name & p.TransportPackage.Equals(instance.TransportPackage)).AsEnumerable <IServiceControlInstance>().ToList(),
                AuditInstances = InstanceFinder.ServiceControlAuditInstances().Where(p => p.Name != instance.Name & p.TransportPackage.Equals(instance.TransportPackage)).AsEnumerable <IServiceControlAuditInstance>().ToList(),
            };

            validator.RunValidation();
        }
コード例 #18
0
        protected override void ProcessRecord()
        {
            var logger = new PSLogger(Host);

            var zipFolder = Path.GetDirectoryName(MyInvocation.MyCommand.Module.Path);
            var installer = new UnattendServiceControlInstaller(logger, zipFolder);

            foreach (var name in Name)
            {
                var options = new ServiceControlUpgradeOptions {
                    AuditRetentionPeriod = AuditRetentionPeriod, ErrorRetentionPeriod = ErrorRetentionPeriod, OverrideEnableErrorForwarding = ForwardErrorMessages, SkipQueueCreation = SkipQueueCreation
                };
                var instance = InstanceFinder.FindServiceControlInstance(name);
                if (instance == null)
                {
                    WriteWarning($"No action taken. An instance called {name} was not found");
                    break;
                }

                options.OverrideEnableErrorForwarding = ForwardErrorMessages;

                // Migrate Value
                if (!options.AuditRetentionPeriod.HasValue)
                {
                    if (instance.AppConfig.AppSettingExists(SettingsList.HoursToKeepMessagesBeforeExpiring.Name))
                    {
                        var i = instance.AppConfig.Read(SettingsList.HoursToKeepMessagesBeforeExpiring.Name, -1);
                        if (i != -1)
                        {
                            options.AuditRetentionPeriod = TimeSpan.FromHours(i);
                        }
                    }
                }

                if (!options.OverrideEnableErrorForwarding.HasValue & !instance.AppConfig.AppSettingExists(SettingsList.ForwardErrorMessages.Name))
                {
                    ThrowTerminatingError(new ErrorRecord(new Exception($"Upgrade of {instance.Name} aborted. ForwardErrorMessages parameter must be set to true or false because the configuration file has no setting for ForwardErrorMessages. This setting is mandatory as of version 1.12"), "UpgradeFailure", ErrorCategory.InvalidArgument, null));
                }

                if (!options.ErrorRetentionPeriod.HasValue & !instance.AppConfig.AppSettingExists(SettingsList.ErrorRetentionPeriod.Name))
                {
                    ThrowTerminatingError(new ErrorRecord(new Exception($"Upgrade of {instance.Name} aborted. ErrorRetentionPeriod parameter must be set to timespan because the configuration file has no setting for ErrorRetentionPeriod. This setting is mandatory as of version 1.13"), "UpgradeFailure", ErrorCategory.InvalidArgument, null));
                }

                if (!options.AuditRetentionPeriod.HasValue & !instance.AppConfig.AppSettingExists(SettingsList.AuditRetentionPeriod.Name))
                {
                    ThrowTerminatingError(new ErrorRecord(new Exception($"Upgrade of {instance.Name} aborted. AuditRetentionPeriod parameter must be set to timespan because the configuration file has no setting for AuditRetentionPeriod. This setting is mandatory as of version 1.13"), "UpgradeFailure", ErrorCategory.InvalidArgument, null));
                }

                if (!installer.Upgrade(instance, options))
                {
                    ThrowTerminatingError(new ErrorRecord(new Exception($"Upgrade of {instance.Name} failed"), "UpgradeFailure", ErrorCategory.InvalidResult, null));
                }
            }
        }
コード例 #19
0
        protected override void ProcessRecord()
        {
            var details = new ServiceControlNewInstance
            {
                InstallPath             = InstallPath,
                LogPath                 = LogPath,
                DBPath                  = DBPath,
                Name                    = Name,
                DisplayName             = string.IsNullOrWhiteSpace(DisplayName) ? Name : DisplayName,
                ServiceDescription      = Description,
                ServiceAccount          = ServiceAccount,
                ServiceAccountPwd       = ServiceAccountPassword,
                HostName                = HostName,
                Port                    = Port,
                DatabaseMaintenancePort = DatabaseMaintenancePort,
                VirtualDirectory        = VirtualDirectory,
                AuditQueue              = AuditQueue,
                ErrorQueue              = ErrorQueue,
                AuditLogQueue           = string.IsNullOrWhiteSpace(AuditLogQueue) ? null : AuditLogQueue,
                ErrorLogQueue           = string.IsNullOrWhiteSpace(ErrorLogQueue) ? null : ErrorLogQueue,
                ForwardAuditMessages    = ForwardAuditMessages.ToBool(),
                ForwardErrorMessages    = ForwardErrorMessages.ToBool(),
                AuditRetentionPeriod    = AuditRetentionPeriod,
                ErrorRetentionPeriod    = ErrorRetentionPeriod,
                ConnectionString        = ConnectionString,
                TransportPackage        = ServiceControlCoreTransports.All.First(t => t.Matches(Transport)),
                SkipQueueCreation       = SkipQueueCreation
            };

            var zipfolder = Path.GetDirectoryName(MyInvocation.MyCommand.Module.Path);
            var logger    = new PSLogger(Host);

            var installer = new UnattendServiceControlInstaller(logger, zipfolder);

            try
            {
                logger.Info("Installing Service Control instance...");
                if (installer.Add(details, PromptToProceed))
                {
                    var instance = InstanceFinder.FindServiceControlInstance(details.Name);
                    if (instance != null)
                    {
                        WriteObject(PsServiceControl.FromInstance(instance));
                    }
                    else
                    {
                        throw new Exception("Unknown error creating instance");
                    }
                }
            }
            catch (Exception ex)
            {
                ThrowTerminatingError(new ErrorRecord(ex, null, ErrorCategory.NotSpecified, null));
            }
        }
コード例 #20
0
        void AddMissingInstances()
        {
            var missingInstances = InstanceFinder.AllInstances().Where(i => !Instances.Any(existingInstance => existingInstance.Name == i.Name));

            foreach (var item in missingInstances)
            {
                Instances.Add(instanceDetailsFunc(item));
            }

            NotifyOfPropertyChange(nameof(OrderedInstances));
        }
コード例 #21
0
        public void UpgradeInstance()
        {
            var installer = new UnattendServiceControlInstaller(new TestLogger(), DeploymentCache);

            foreach (var instance in InstanceFinder.ServiceControlInstances().Where(p => p.Name.StartsWith("Test.ServiceControl", StringComparison.OrdinalIgnoreCase)))
            {
                installer.Upgrade(instance, new ServiceControlUpgradeOptions {
                    AuditRetentionPeriod = TimeSpan.FromDays(30), ErrorRetentionPeriod = TimeSpan.FromDays(15), OverrideEnableErrorForwarding = true
                });
            }
        }
コード例 #22
0
        protected override void ProcessRecord()
        {
            var instance = InstanceFinder.FindInstanceByName <ServiceControlInstance>(Name);

            if (instance == null)
            {
                WriteWarning($"No action taken. An instance called {Name} was not found");
                return;
            }

            WriteObject(instance.RemoteInstances.Select(PsServiceControlRemote.FromRemote), true);
        }
コード例 #23
0
 // We need this to ignore the instance that represents the edit screen
 protected List <string> UsedPorts(string instanceName = null)
 {
     return(InstanceFinder.ServiceControlInstances()
            .Where(p => string.IsNullOrWhiteSpace(instanceName) || p.Name != instanceName)
            .SelectMany(p => new[]
     {
         p.Port.ToString(),
         p.DatabaseMaintenancePort.ToString()
     })
            .Distinct()
            .ToList());
 }
コード例 #24
0
 // We need this to ignore the instance that represents the edit screen
 protected List <string> UsedPaths(string instanceName = null)
 {
     return(InstanceFinder.ServiceControlInstances()
            .Where(p => string.IsNullOrWhiteSpace(instanceName) || p.Name != instanceName)
            .SelectMany(p => new[]
     {
         p.DBPath,
         p.LogPath,
         p.InstallPath
     })
            .Distinct()
            .ToList());
 }
コード例 #25
0
        // ReSharper disable once UnusedMethodReturnValue.Global
        public bool Delete(string instanceName, bool removeDB, bool removeLogs)
        {
            var instance = InstanceFinder.FindServiceControlInstance(instanceName);

            instance.ReportCard = new ReportCard();
            if (!instance.TryStopService())
            {
                logger.Error("Service failed to stop");
                return(false);
            }

            try
            {
                instance.BackupAppConfig();
                instance.Service.SetStartupMode("Disabled");
                instance.Service.Delete();
                instance.RemoveUrlAcl();
                instance.RemoveBinFolder();
                if (removeLogs)
                {
                    instance.RemoveLogsFolder();
                }

                if (removeDB)
                {
                    instance.RemoveDataBaseFolder();
                }

                foreach (var warning in instance.ReportCard.Warnings)
                {
                    logger.Warn(warning);
                }

                if (instance.ReportCard.HasErrors)
                {
                    foreach (var error in instance.ReportCard.Errors)
                    {
                        logger.Error(error);
                    }

                    return(false);
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
                return(false);
            }

            return(true);
        }
コード例 #26
0
        internal ReportCard Delete(string instanceName, bool removeDB, bool removeLogs, IProgress <ProgressDetails> progress = null)
        {
            progress = progress ?? new Progress <ProgressDetails>();
            progress.Report(0, 7, "Stopping instance...");
            var instance = InstanceFinder.FindServiceControlInstance(instanceName);

            instance.ReportCard = new ReportCard();

            if (!instance.TryStopService())
            {
                return(new ReportCard
                {
                    Errors = { "Service failed to stop" },
                    Status = Status.Failed
                });
            }

            instance.BackupAppConfig();

            progress.Report(1, 7, "Disabling startup...");
            instance.Service.SetStartupMode("Disabled");

            progress.Report(2, 7, "Deleting service...");
            instance.Service.Delete();

            progress.Report(3, 7, "Removing URL ACL...");
            instance.RemoveUrlAcl();

            progress.Report(4, 7, "Deleting install...");
            instance.RemoveBinFolder();

            if (removeLogs)
            {
                progress.Report(5, 7, "Deleting logs...");
                instance.RemoveLogsFolder();
            }

            if (removeDB)
            {
                progress.Report(6, 7, "Deleting database...");
                instance.RemoveDataBaseFolder();
            }

            progress.Report(new ProgressDetails());

            instance.ReportCard.SetStatus();
            return(instance.ReportCard);
        }
コード例 #27
0
        internal ReportCard Upgrade(string instanceName, ServiceControlUpgradeOptions upgradeOptions, IProgress <ProgressDetails> progress = null)
        {
            progress = progress ?? new Progress <ProgressDetails>();

            var instance = InstanceFinder.FindServiceControlInstance(instanceName);

            instance.ReportCard = new ReportCard();
            ZipInfo.ValidateZip();

            progress.Report(0, 7, "Stopping instance...");
            if (!instance.TryStopService())
            {
                return(new ReportCard
                {
                    Errors = { "Service failed to stop" },
                    Status = Status.Failed
                });
            }

            progress.Report(1, 7, "Backing up app.config...");
            var backupFile = instance.BackupAppConfig();

            try
            {
                progress.Report(2, 7, "Upgrading Files...");
                instance.UpgradeFiles(ZipInfo.FilePath);
            }
            finally
            {
                progress.Report(3, 7, "Restoring app.config...");
                instance.RestoreAppConfig(backupFile);
            }

            upgradeOptions.ApplyChangesToInstance(instance);

            progress.Report(4, 6, "Removing database indexes...");
            instance.RemoveDatabaseIndexes();

            progress.Report(4, 6, "Updating Database...");
            instance.UpdateDatabase(msg => progress.Report(5, 7, $"Updating Database...{Environment.NewLine}{msg}"));

            progress.Report(6, 7, "Running Queue Creation...");
            instance.SetupInstance();

            instance.ReportCard.SetStatus();
            return(instance.ReportCard);
        }
コード例 #28
0
        protected override void ProcessRecord()
        {
            var logger = new PSLogger(Host);

            var zipFolder = Path.GetDirectoryName(MyInvocation.MyCommand.Module.Path);
            var installer = new UnattendServiceControlInstaller(logger, zipFolder);

            var instance = InstanceFinder.FindInstanceByName <ServiceControlInstance>(Name);

            if (instance == null)
            {
                WriteWarning($"No action taken. An instance called {Name} was not found");
                return;
            }

            WriteObject(installer.AddRemoteInstance(instance, RemoteInstanceAddress, logger));
        }
コード例 #29
0
        public static List <string> UsedAuditQueueNames(TransportInfo transportInfo = null, string instanceName = null, string connectionString = null)
        {
            var serviceControlInstances = InstanceFinder.ServiceControlAuditInstances();
            var instancesByTransport    = serviceControlInstances.Where(p => p.TransportPackage.Equals(transportInfo) &&
                                                                        string.Equals(p.ConnectionString, connectionString, StringComparison.OrdinalIgnoreCase)).ToList();

            return(instancesByTransport
                   .Where(p => string.IsNullOrWhiteSpace(instanceName) || p.Name != instanceName)
                   .SelectMany(p => new[]
            {
                p.AuditQueue,
                p.AuditLogQueue
            }).Where(queuename => string.Compare(queuename, "!disable", StringComparison.OrdinalIgnoreCase) != 0 &&
                     string.Compare(queuename, "!disable.log", StringComparison.OrdinalIgnoreCase) != 0)
                   .Distinct()
                   .ToList());
        }
コード例 #30
0
        protected override void ProcessRecord()
        {
            var logger    = new PSLogger(Host);
            var zipfolder = Path.GetDirectoryName(MyInvocation.MyCommand.Module.Path);
            var installer = new UnattendMonitoringInstaller(logger, zipfolder);

            foreach (var name in Name)
            {
                var instance = InstanceFinder.FindMonitoringInstance(name);
                if (instance == null)
                {
                    WriteWarning($"No action taken. An instance called {name} was not found");
                    break;
                }
                WriteObject(installer.Delete(instance.Name, RemoveLogs.ToBool()));
            }
        }