Beispiel #1
0
        /// <summary>
        /// This will disable the windows update on system.
        /// </summary>
        private void DisableWindowsUpdate()
        {
            CheckpointFileData fileData = this.ReadCheckpointFile();

            DateTime initialTime = DateTime.Now;

            if (!fileData.lastAttemptedUpdateTime.Equals(_checkpointFileDefaultDateTime))
            {
                initialTime = fileData.lastAttemptedUpdateTime;
            }

            long timeToLive = (long)((fileData.schedulingDateTime - initialTime) + TimeSpan.FromDays(1)).TotalMinutes;

            if (!this._serviceSettings.DisableWindowsUpdates)
            {
                _eventSource.InfoMessage("Not disabling automatic windows updates.");
                return;
            }

            _eventSource.InfoMessage("Disabling automatic windows updates.");
            do
            {
                string msg = "Not able to disable the 'Windows Updates'. ";
                try
                {
                    WindowsAutoUpdateUtility auUtility = new WindowsAutoUpdateUtility();
                    if (auUtility.IsWindowsServer2012R2OrLower())
                    {
                        _eventSource.InfoMessage("Detected OS version is Windows Server 2012R2 or lower");
                        AutomaticUpdatesClass updates = new AutomaticUpdatesClass();

                        _eventSource.InfoMessage("Current automatic windows updates notification level {0}.", updates.Settings.NotificationLevel);
                        auUtility.DisableAUThroughWUApi(updates);
                    }
                    else
                    {
                        _eventSource.InfoMessage("Detected OS version is higher than Windows Server 2012R2");
                        _eventSource.InfoMessage("Current AU registry values are {0}", auUtility.LogCurrentAUValues());
                        auUtility.SetAUOptions();
                        _eventSource.InfoMessage("New AU registry values are {0}", auUtility.LogCurrentAUValues());
                    }
                    string updateMsg = "Windows Update policy has been configured to Notify before Download";
                    this._nodeAgentSfUtility.ReportHealth(WUOperationSetting, updateMsg, HealthState.Ok, timeToLive, TimeSpan.FromMinutes(this._serviceSettings.OperationTimeOutInMinutes));
                    return;
                }
                catch (Exception e)
                {
                    msg = string.Format(msg + "Failing with exception : {0}", e);
                }

                _eventSource.WarningMessage(msg);
                this._nodeAgentSfUtility.ReportHealth(WUOperationSetting, msg, HealthState.Warning, -1, TimeSpan.FromMinutes(this._serviceSettings.OperationTimeOutInMinutes));
                this._helper.WaitOnTask(Task.Delay(TimeSpan.FromMinutes(WaitTimeInMinutes)), this._cancellationToken);
            } while (true);
        }
        /// <summary>
        /// This will disable the windows update on system.
        /// </summary>
        private void DisableWindowsUpdate()
        {
            if (!this._serviceSettings.DisableWindowsUpdates)
            {
                _eventSource.InfoMessage("Not disabling automatic windows updates.");
                return;
            }

            _eventSource.InfoMessage("Disabling automatic windows updates.");
            do
            {
                string msg = "Not able to disable the 'Windows Updates'. ";
                try
                {
                    WindowsAutoUpdateUtility auUtility = new WindowsAutoUpdateUtility();
                    if (auUtility.IsWindowsServer2012R2OrLower())
                    {
                        _eventSource.InfoMessage("Detected OS version is Windows Server 2012R2 or lower");
                        AutomaticUpdatesClass updates = new AutomaticUpdatesClass();

                        _eventSource.InfoMessage("Current automatic windows updates notification level {0}.", updates.Settings.NotificationLevel);
                        auUtility.DisableAUThroughWUApi(updates);
                    }
                    else
                    {
                        _eventSource.InfoMessage("Detected OS version is higher than Windows Server 2012R2");
                        _eventSource.InfoMessage("Current AU registry values are {0}", auUtility.LogCurrentAUValues());
                        auUtility.SetAUOptions();
                        _eventSource.InfoMessage("New AU registry values are {0}", auUtility.LogCurrentAUValues());
                    }
                    return;
                }
                catch (Exception e)
                {
                    msg = string.Format(msg + "Failing with exception : {0}", e);
                }

                _eventSource.WarningMessage(msg);
                this._nodeAgentSfUtility.ReportHealth("WindowsUpdateOperationResult", msg, HealthState.Warning, -1, TimeSpan.FromMinutes(this._serviceSettings.OperationTimeOutInMinutes));
                this._helper.WaitOnTask(Task.Delay(TimeSpan.FromMinutes(WaitTimeInMinutes)), this._cancellationToken);
            } while (true);
        }