PDA

Показать полную графическую версию : Пакетная работа со службами Windows 10, резервирование настроек и откат


adgeuk
25-01-2024, 17:07
Добрый день,

нужна возможность бекапа настроек всех служб Windows 10 чтобы потом быстро к ним откатиться.
Также, нужна возможность пакетного включения/выключения и изменения типа запуска служб.
Например, я имею какую-либо ошибку на ПК или что-то не работает, в этот момент я бы хотел разом запустить все службы на компьютере, проверить не исчезла ли ошибка, а затем откатиться к предыдущему состоянию служб.

Из более-менее похожего нашёл вот это:

Easy Services Optimizer - поддерживает пакетный вкл/выкл и изменение способа запуска, поддерживает бекап, но не видит большинство служб, не обновлялась с 2017 года.

FireDeamon Pro - поддерживает пакетный вкл/выкл и изменение способа запуска, но не поддерживает бекап, работает коряво.

NirSoft ServiWin - поддерживает пакетный вкл/выкл и изменение способа запуска, даже сохраняет состояние о выбранной группе служб в файл, но этот файл нельзя использовать для отката, а только для ознакомления и последующей ручной настройки.

Win10Tweaker - сам включает/отключает службы основываясь на ответах пользователя о его способе использования операционной системы,
создаёт резервную копию ответов пользователя, затем основываясь на них включает/отключает определённые группы служб, но сами настройки служб не сохраняются. Если самому персонально изменить настройки конкретной службы, то в резервной копии Win10Tweaker это никак не отобразится, поскольку там хранятся лишь общие предпочтения пользователя.

В идеале, нужен аналог Easy Services Optimizer который увидит все службы или аналог NirSoft ServiWin с возможностью отката к сохранённым настройкам.

adgeuk
27-01-2024, 19:49
Есть вариант с PowerShell:

Включение выполнения скриптов:

Set-ExecutionPolicy RemoteSigned
Создание бекапа:

Get-Service | Export-Clixml -Path "D:\Desktop\ServicesBackup.xml"

Восстановление из бекапа:

$services = Import-Clixml -Path "D:\Desktop\ServicesBackup.xml"
foreach ($service in $services) {
Set-Service -Name $service.Name -StartupType $service.StartType
if ($service.Status -eq 'Running') {
Start-Service -Name $service.Name
}
}

Такой способ подсказал мне GPT чат, пока не пробовал.

adgeuk
28-01-2024, 15:49
А для того чтобы службы запускались при восстановлении в правильном порядке, GPT предлагает следующий код:

# Создание бэкапа состояния служб
Get-Service | Export-Clixml -Path "D:\Desktop\ServicesBackup.xml"

# Восстановление служб из бэкапа с учетом зависимостей
$services = Import-Clixml -Path "D:\Desktop\ServicesBackup.xml"

# Определение порядка запуска служб
function Start-ServicesInOrder {
param(
[array]$services
)

$servicesToStart = @()

foreach ($service in $services) {
# Если служба зависит от других служб, они должны быть запущены сначала
$dependentServices = Get-Service -Name $service.Name | Select-Object -ExpandProperty DependentServices

foreach ($dependentService in $dependentServices) {
if ($dependentService.Status -ne 'Running' -and $dependentService.Name -notin $servicesToStart) {
$servicesToStart += $dependentService.Name
}
}

# Затем добавляем текущую службу
if ($service.Status -ne 'Running' -and $service.Name -notin $servicesToStart) {
$servicesToStart += $service.Name
}
}

# Восстанавливаем службы в правильном порядке
foreach ($serviceToStart in $servicesToStart) {
Start-Service -Name $serviceToStart
}
}

Start-ServicesInOrder -services $services

Думаю, надо потестировать на виртуалке сначала




© OSzone.net 2001-2012