Многие статьи, касающиеся решения тех или иных проблем в Windows 11/10 или других версиях ОС, среди прочих шагов могут предлагать попробовать изменить тип запуска служб. Однако не все пользователи знают, как именно это сделать.
В этой инструкции для начинающих подробно о способах изменить тип запуска службы в Windows актуальных версий, а также о том, что делать, если выбор типа запуска не активен.
Оснастка «Службы»
Базовый способ изменения типа запуска службы — использовать соответствующий инструмент их настройки, предусмотренный в Windows. Шаги будут следующими:
- Нажмите клавиши Win+R на клавиатуре, либо нажмите правой кнопкой мыши по кнопке «Пуск» и выберите пункт «Выполнить». Введите services.msc и нажмите Enter.
- Откроется список служб Windows. Найдите ту из них, тип запуска которой нужно изменить и дважды кликните по ней мышью, либо, если вы используете клавиатуру — Enter.
- Откроются свойства выбранной службы. Достаточно изменить значение в поле «Тип запуска» на нужный вам и применить настройки.
Тип запуска будет использован при следующей перезагрузке компьютера. Однако, в этом же окне после изменения типа запуска вы можете вручную запустить или остановить службу, в зависимости от того, требуется ли её работа.
При изменении типа запуска этим способом вы можете обнаружить, что для некоторых служб изменение типа запуска недоступно: обычно это происходит для важных системных служб Windows 11/10, отключение которых может привести к проблемам с работой операционной системы.
Основная рекомендация в этом случае — не трогать такую службу, а добиться желаемого результата иными методами. Однако, если отключение необходимо, вы можете использовать приведённый далее способ изменения типа запуска в редакторе реестра.
Редактор реестра
Параметры служб, включая тип запуска, хранятся в реестре Windows, соответственно для его изменения можно использовать редактор реестра (рекомендую предварительно создать точку восстановления системы):
- Нажмите клавиши Win+R на клавиатуре, введите regedit и нажмите Enter
- Перейдите к разделу реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
- Найдите подраздел, соответствующий имени нужной службы (имена служб можно посмотреть в их свойствах в services.msc на вкладке «Общие») и перейдите к нему.
- Дважды нажмите по параметру с именем Start в правой панели редактора реестра и установите для него нужное значение: 2 — Автоматически, 3 — Вручную, 4 — Отключена. Есть ещё два значения: 0 (загрузка) и 1 (система), они не должны использоваться для обычных служб, только для служб драйверов. Также вы можете создать параметр DWORD с именем DelayedAutostart со значением 1, если хотите использовать тип запуска службы «Автоматически» с отложенным запуском.
- Примените настройки и перезагрузите компьютер.
При изменении параметра Start для некоторых служб вы можете получить сообщение об ошибке «Не удается изменить Start. Ошибка при записи нового значения параметра». Это говорит о том, что изменение для этой службы защищено системой (иногда — антивирусом, в том числе Microsoft Defender с включенной функцией «Защита от подделки»).
Возможные действия (при условии, что вы уверены, что хотите продолжить и понимаете риски) описаны в инструкции Как стать владельцем раздела реестра в Windows, также можно попробовать использовать редакторы «удаленного» реестра с LiveCD.
Командная строка
И ещё один метод: изменение типа запуска с помощью командной строки. Достаточно запустить командную строку от имени администратора (именно командную строку, не PowerShell), после чего использовать команды (первая из них останавливает службу, если она запущена):
sc stop "имя_службы" sc config "имя_службы" start=ТИП_ЗАПУСКА
при этом доступны следующие варианты типа запуска:
- BOOT — Загрузка
- SYSTEM — Система
- AUTO — Автоматически
- DEMAND — Вручную
- DISABLED — Отключена
- DELAYED-AUTO — Автоматически (отложенный запуск)
Ещё один вариант команды:
wmic service where name='имя_службы' call ChangeStartmode Тип_запуска
Существуют и дополнительные возможности изменения типа запуска служб и их отключения:
- Если требуется отключить все сторонние службы, можно использовать окно конфигурации компьютера msconfig, подробнее: Чистая загрузка Windows
- Удобно отключить ненужные или включить нужные службы можно в программе Autoruns, доступной в Sysinternals Suite или отдельно.
- Можно использовать (но я бы не стал прямо рекомендовать) сторонние программы «оптимизации» служб, такие как Easy Service Optimizer
In this article…
- What is a service’s Startup Type? Where do I find it?
- Automatic
- Automatic (Delayed Start)
- Manual
- Disabled
- Intermission: What does “Trigger Start” mean?
- Automatic (Trigger Start)
- Automatic (Delayed Start, Trigger Start)
- Manual (Trigger Start)
- Windows Service startup types: Summary
What is a service’s Startup Type? Where do I find it?
A Windows Service is a special application whose lifecycle is managed by the operating system. That is, unlike a “normal” application that relies on a person to start or stop it, Windows itself is responsible for starting, stopping or restarting a service.
To give you some control over how things work, each Windows Service has a startup type property that dictates how Windows should manage it. The options range from “start it as soon as you can” to “don’t run the service at all”. There’s even the ability to start a service when certain conditions are met. But more on those later as we dig into each of the startup types below.
The built-in Services application shows the startup type for each service. You can launch the application by typing “services” into the search bar and clicking its icon:
The Services window lists all the Windows Services running on your computer. The “Startup Type” column indicates how each service is configured to start:
Double-click a row to reveal the details of that service in the Properties window. You’ll see the “Startup type” field about half-way down:
If permissions allow, you can change the startup type right there as well. Simply choose a new value from the list and click OK (or Apply) to record your change:
And now that you know how to find the startup type of any service, let’s review the values available and what each of them means.
Automatic
When a service is set to “Automatic”, Windows will start it as soon as possible whenever the system boots.
Because of that early start, all critical Windows Services — like those supporting networking, security and user management — are set to start automatically. That enables them to come to life quickly, to support key functionality across your computer.
When to set startup type to “Automatic”
Automatic start is best for services that:
-
Implement technical functions that are vital for the operation of your PC;
-
Are needed to support other services or applications;
-
Must run all the time.
Examples of “Automatic” services
Many of the built-in Windows Services are set to start automatically. Here are a few examples:
-
Windows Defender Firewall — helps protect your computer by preventing unauthorized users from gaining access to your computer through the Internet or a network. This service must be ready by the time the network is up.
-
Local Session Manager — a core Windows Service that manages local user sessions. Stopping or disabling this service will result in system instability.
-
Windows Event Log — manages events and event logs for other services. Stopping this service may compromise the security and reliability of the system.
Automatic (Delayed Start)
Windows launches “Automatic (Delayed Start)” services about 1-2 minutes after your computer boots — after Automatic services have started.
You can think of Windows launching services in two rounds at boot. Automatic services go in the first round while “Automatic (Delayed Start)” services are kicked off in the second round.
As such, the “Automatic (Delayed Start)” setting is most useful in lessening the mad rush for resources when your computer starts up.
For example, suppose that there are 20 services all being started at the same time. In reality, they will all be competing for slices of the machine’s precious resources (CPU/RAM/Disk/Network). The inevitable result is that each service will take longer to become available.
If you have a few services that are critical, then you may want to set those few to “Automatic” and set as many of the others as you can to “Automatic (Delayed Start)”. This will ensure that the critical services get the most resources early and become available sooner, while the non-critical services start a bit later (which by definition is OK).
When to set startup type to “Automatic (Delayed Start)”
“Automatic (Delayed Start)” is best for services that:
-
Should start at boot but don’t perform mission-critical activities;
-
Are best started after supporting services are up and running;
-
Should run all the time.
Examples of “Automatic (Delayed Start)” services
On Windows 11, less than a dozen of the built-in Windows Services are set to start delayed. Here are a few examples:
-
Security Center — monitors and reports security health settings on the computer. This service should run all the time but there is no need to start it ASAP because it’s focused on reporting.
-
Update Orchestrator Service — manages Windows Updates. If stopped, your computer will not be able to download and install the latest updates. Since it’s not a critical service, Windows starts it in the second round.
-
Dropbox Update Service — keeps your Dropbox installations up to date. The service is certainly helpful but it doesn’t need to start the instant your PC reboots.
Manual
A “Manual” service isn’t automatically started by Windows at boot. Instead, it will be started on demand — either by a user or by an application.
For the most part, “Manual” services sit idle until they’re needed. And often, they return to an idle state once they’ve performed the work they were summoned to do. As such, they tend to be the most efficient group of services, only running when they need to.
Note that in previous versions of Windows, the vast majority of services were set to “Automatic” and only a handful were “Manual”. But over the years, as Microsoft focused on streamlining the boot process, the situation has fully reversed. Most of the built-in Windows Services are now started on demand!
When to set startup type to “Manual”
The “Manual” startup type is appropriate for services that:
-
Don’t need to run 24/7;
-
Are only used occasionally;
-
Provide uncommon functionality that only some devices (or users) will need;
-
Aim to achieve maximum efficiency, only running when necessary;
Examples of “Manual” services
Many of the built-in Windows Services are set to “Manual”. Here are a few examples:
-
Windows Backup — provides backup and restore capabilities, which are only necessary at defined times.
-
Fax Service — enables you to send and receive faxes. Who uses that anymore? 🙂
-
Microsoft Edge Elevation Service — keeps Microsoft Edge up to date. This service only comes to life a few times per day.
Disabled
Setting the startup type to “Disabled” tells Windows don’t allow the service to start — under any circumstances. You cannot run a disabled service.
If you wish to start a disabled service, you must first change its startup type to another value. Setting to “Manual” usually makes the most sense.
When to set startup type to “Disabled”
You should disable services that:
-
Shouldn’t (or cannot) run;
-
Are responsible for unused functionality;
-
Are insecure and may compromise the system in some fashion.
Examples of “Disabled” services
Here are a few examples of services with startup type set to “Disabled”:
-
Shared PC Account Manager — Manages profiles and accounts on a SharedPC configured device. It’s disabled on our machine because we’re not using the SharedPC feature.
-
OpenSSH Authentication Agent — holds private keys used for public key authentication. Citing security concerns, Microsoft disables this rarely used service in new installations of Windows 10 & 11.
-
Remote Registry — enables remote users to modify registry settings on this computer. Certainly not for everyone!
Intermission: What does “Trigger Start” mean?
Because the remaining startup types all mention “Trigger Start”, we thought this would be a good time to explain what that means. Here goes…
In older versions of Windows, the only startup types available were the ones we’ve already reviewed — Automatic, Automatic (Delayed Start), Manual and Disabled. Each service was assigned one of those values. (Incidentally, most were set to “Automatic”, which made for utter chaos as they all scrambled to start at boot.)
However, in Windows 7 (circa 2009), Microsoft introduced a new capability — the ability to start (or stop) a service when a key operating system event occurs. They called those events triggers and services that react to the events trigger start services.
Putting it all together, a service has “Trigger Start” in its startup type if it has at least one trigger.
But why did Microsoft introduce trigger start services?
Well, by offering trigger start as an option, Microsoft made it easier for Windows Services to avoid starting at boot and running 24/7. For example, if your service works with USB drives, you can configure it to start whenever someone inserts a USB drive. Similarly, a network-monitoring service may choose to run only when your computer signs out of a domain or leaves the network. Options abound, and you can read about the technical details in the Developing Efficient Background Processes for Windows white paper.
So service triggers are great. But there is one major inconvenience…
You can’t view or edit triggers with the Services application
Until Microsoft updates the Services application to manage triggers, you either have to:
-
rely on the Windows SC command-line program, or
-
use our free Service Trigger Editor GUI utility, which shows you all the trigger start services on your system:
Anyway, back to startup types…
Automatic (Trigger Start)
“Automatic (Trigger Start)” means start the service immediately at boot — and also restart it whenever specific operating system events (triggers) occur.
It’s the same as Automatic, plus with one or more triggers too.
As a result, an “Automatic (Trigger Start)” service can be very efficient. Even though Windows starts it as soon as possible, the service can do its initial work and quickly exit — secure in the knowledge that Windows will fire it up again whenever it’s needed.
When to set startup type to “Automatic (Trigger Start)”
“Automatic (Trigger Start)” start works best for services that:
-
Should to start as soon as possible after boot;
-
Don’t need to run all the time;
-
Can be reactivated by a triggering event.
Examples of “Automatic (Trigger Start)” services
On our Windows 11 computer, only six services are set to “Automatic (Trigger Start)”. Here are a few of them:
-
Server — supports file, print, and named-pipe sharing over the network. As you might expect, the two triggers are network-related:
-
Windows Connection Manager — makes automatic connect/disconnect decisions based on the network connectivity options currently available to the PC and enables management of network connectivity based on Group Policy settings.
-
Group Policy Client — responsible for applying settings configured by administrators for the computer and users through the Group Policy component.
Automatic (Delayed Start, Trigger Start)
An “Automatic (Delayed Start, Trigger Start)” service starts a few minutes after boot — and also in response to a trigger.
As you may have guessed, “Automatic (Delayed Start, Trigger Start)” is similar to Automatic (Trigger Start), except that the service starts 1-2 minutes after boot (instead of ASAP).
When to set startup type to “Automatic (Delayed Start, Trigger Start)”
“Automatic (Delayed Start, Trigger Start)” can apply to services that:
-
Should to start at boot but can wait for a couple of minutes;
-
Don’t need to run all the time;
-
Can be reactivated by a triggering event.
Examples of “Automatic (Delayed Start, Trigger Start)” services
Few of the built-in Windows Services use this startup type. Here are three examples:
-
Microsoft Edge Update Service — keeps your Microsoft software up to date.
-
Software Protection — enables the download, installation and enforcement of digital licenses for Windows and Windows applications.
-
Windows Time — maintains date and time synchronization on all clients and servers in the network. Because it’s all about networking, the service will trigger-start when your computer joins a domain:
Manual (Trigger Start)
Windows never starts a “Manual (Trigger Start)” service at boot. It only starts the service in response to a trigger.
This is the most efficient startup type of them all. Windows only starts the service when its needed.
When to set startup type to Manual (Trigger Start)
“Manual (Trigger Start)” is a fine choice for services that:
-
Don’t need to start at boot;
-
Don’t need to run all the time;
-
Can be reactivated by a triggering event.
Examples of Manual (Trigger Start) services
“Manual (Trigger Start)” is the most popular startup type on our Windows 11 computer. That’s a testament to the work that Microsoft has put in to ensure that its services don’t hog resources by running when they don’t need to.
Example services include:
-
BitLocker Drive Encryption Service — provides secure startup for the operating system, as well as full volume encryption for OS, fixed or removable volumes. It only needs to run under special conditions (when a custom event is triggered).
-
Windows Update — enables the detection, download, and installation of updates for Windows and other programs. As you can see, the service will spring to life whenever a policy changes:
-
Portable Device Enumerator Service — enforces group policy for removable mass-storage devices. It employs a dozen triggers!
Windows Service startup types: Summary
To recap, the startup type tells Windows how it should start your service.
Here is what each value communicates to the operating system:
-
Automatic: “Start this service at boot, early in the cycle.”
-
Automatic (Delayed Start): “Start this service at boot, but delay it by a couple of minutes.”
-
Manual: “Don’t start this service at boot.”
-
Disabled: “Don’t start this service at boot, and don’t allow anyone (or any program) to start it either.”
-
Automatic (Trigger Start): “Start this service early in the boot cycle and start/stop it when specific events occur.”
-
Automatic (Delayed Start, Trigger Start): “Start this service a couple of minutes after boot and start/stop it when specific events occur.”
-
Manual (Trigger Start): “Don’t start this service at boot, only start/stop it when specific events occur.”
You may also like…
Last Modified on 04/07/2025 5:54 pm EDT
How to change the Startup Type for a Windows service via Command Prompt
Procedure Steps
Complete the following steps to change the startup type for a Windows service using Command Prompt. This can be useful if you need to configure the services in batch files and in situations where the Windows Services window is not available.
1) Open Command Prompt.
— Click on the Start button, and then select Run.
— Type cmd in the Open field, and then click [OK].
2) Type one of the following commands, depending on the startup type you want to change:
To configure a service to start automatically at system startup (startup type is «Automatic»), enter the following command:
sc \\SERVERNAME config «Service Name» start= auto
To configure a service to be able to be started and stopped manually (startup type is «Manual»), enter the following command:
sc \\SERVERNAME config «Service Name» start= demand
To configure a service to be disabled (startup type is «Disabled»), enter the following command:
sc \\SERVERNAME config «Service Name» start= disabled
Substitute the full name of the service (as listed in the Windows Services window) for «Service Name.» Quotation marks are required.
Substitute the correct hostname of the computer for SERVERNAME. The backslashes are required. If the command is being run to change the startup type of a service on the local computer, \\SERVERNAME is not required.
Important: The space after the equal sign (=) is REQUIRED in each command. The command will not execute unless this space exists.
When each command is executed, the following response should be displayed in Command Prompt:
[SC] ChangeServiceConfig SUCCESS
At this point, the start type of the service is changed.
Applies To
Windows (All versions)
Additional Information
To configure a Windows service in an NEC ExpressCluster X system, substitute \\FAILOVER for \\SERVERNAME.
For more information on configuring Windows services using the sc command, refer to the Microsoft Knowledge Base
http://.microsoft.com
Related Articles
How would you rate this article?
Thank you for your feedback!
В Windows вы можете управлять службами не только из графической консоли services.msc или утилиты командной строки Sc.exe (первоначальна включалась в пакет ресурсов Resource Kit), но и с помощью PowerShell. В этой статье мы смотрим различные сценарии управления службами Windows с помощью PowerShell.
Содержание:
- Основные командлеты PowerShell для управления службами Windows
- Остановка, запуск, приостановка и перезапуск служб из PowerShell
- Set-Service – изменение настроек службы Windows
- Создание и удаление служб Windows c помощью PowerShell
- Изменение учетной записи для запуска службы
Основные командлеты PowerShell для управления службами Windows
Существует восемь основных командлетов Service, предназначенных для просмотра состояния и управления службами Windows.
Чтобы получить весь список командлетов Service, введите команду:
Get-Help \*-Service
- Get-Service — позволяет получить службы на локальном или удаленном компьютере, как запущенные, так и остановленные;
- New-Service – создать службу. Создает в реестре и базе данных служб новую запись для службы Windows;
- Restart-Service – перезапустить службу. Передает сообщение об перезапуске службы через Windows Service Controller
- Resume-Service – возобновить службы. Отсылает сообщение о возобновлении работы диспетчеру служб Windows;
- Set-Service — изменить параметры локальной или удаленной службы, включая состояние, описание, отображаемое имя и режим запуска. Этот командлет также можно использовать для запуска, остановки или приостановки службы;
- Start-Service – запустить службу;
- Stop-Service – остановить службу (отсылает сообщение об остановке диспетчеру служб Windows);
- Suspend-Service приостановить службу. Приостановленная служба по-прежнему выполняется, однако ее работа прекращается до возобновления работы службы, например с помощью командлета Resume-Service.
Получить подробное описание и примеры использования конкретного командлета можно через Get-help:
Get-Help Start-Service
Get-Service: получаем список служб и их состояние
Получить список и состояние (Running/Stopped) службы на локальном или удаленном компьютере можно с помощью командлета Get-Service. Параметр -Name позволяет делать отбор по имени службы. Имя службы можно задать с использованием подстановочного символа *.
Если вы не знаете точное имя службы, есть возможность найти службы по отображаемому имени с помощью параметра –DisplayName. Можно использовать список значений и подстановочные знаки.
.
Командлет Get-Service можно использовать для получения состояния служб на удаленных компьютерах, указав параметр -ComputerName. Можно опросить статус службы сразу на множестве удаленных компьютеров, их имена нужно перечислить через запятую. Например, приведенная ниже команда получает состояние службы Spooler на удаленных компьютерах RM1 и RM2.
Get-Service spooler –ComputerName RM1,RM2
Status Name DisplayName ------ ---- ----------- Running spooler Print Spooler Stopped spooler Print Spooler
Вывести все свойства службы позволит командлет Select-Object:
Get-Service spooler | Select-Object *
Командлет Select-Object позволит вывести определенные свойства службы. Например, нам нужно вывести имя, статус и доступные возможности службы Spooler:
Get-Service Spooler | Select DisplayName,Status,ServiceName,Can*
Командлет Get-Service имеет два параметра, которые позволяют получить зависимости служб:
- Параметр -DependentServices позволяет вывести службы, которые зависят от данной службы;
- Параметр -RequiredServices позволяет вывести службы, от которых зависит данная служба.
Приведенная ниже команда выводит службы, необходимые для запуска службе Spooler:
Get-Service –Name Spooler -RequiredServices
Следующая команда выводит службы, которые зависят от службы Spooler:
Get-Service –Name Spooler -DependentServices
При необходимости найти службы с определенным состоянием или параметрами, используйте командлет Where-Object. Например, получим список запущенных служб со статусом Running:
Get-Service | Where-Object {$_.status -eq 'running'}
Для вывода служб с типом запуска Manual, выполните команду
Get-Service | Where-Object {$_.starttype -eq 'Manual'}
Проверить, что в системе имеется указанная служба:
if (Get-Service "ServiceTest" -ErrorAction SilentlyContinue)
{
Write-host "ServiceTest exists"
}
Остановка, запуск, приостановка и перезапуск служб из PowerShell
Остановить службу можно с помощью командлета Stop-Service. Чтобы остановить службу печати, выполните команду:
Stop-Service -Name spooler
Командлет Stop-Service не выводит никаких данных после выполнения. Чтобы увидеть результат выполнения команды, используйте параметр -PassThru.
Обратите внимание, что не каждую службу можно остановить. Если есть зависимые службы, то получите ошибку
Cannot stop service because it has dependent services. It can only be stopped if force flag set.
Для принудительной остановки используйте параметр –Force. Вы должны помнить, что остановятся также все зависимые службы:
Stop-Service samss –Force -Passthru
Следующая команда остановит перечисленные службы (bits,spooler) со статусом ”Running”:
get-service bits,spooler | where {$_.status -eq 'running'} | stop-service –passthru
Командлет Start-Service запускает остановленные службы:
Start-Service -Name spooler -PassThru
Служба не запустится, если есть остановленные зависимые службы. Чтобы их найти и включить:
get-service samss | Foreach { start-service $_.name -passthru; start-service $_.DependentServices -passthru}
Командлет Suspend-Service может приостанавливать службы, допускающие временную приостановку и возобновление. Для получения сведений о возможности временной приостановки конкретной службы используйте командлет Get-Service со свойством «CanPauseAndContinue«.
Get-Service samss | Format-List name, canpauseandcontinue
Чтобы отобразить список всех служб, работа которых может быть приостановлена, введите команду:
Get-Service | Where-Object {$_.canpauseandcontinue -eq "True"}
Приостановим службу SQLBrowser:
Suspend-Service -Name SQLBrowser
Для возобновления работы приостановленной службы служит командлет Resume-service:
Resume-Service -Name SQLBrowser
Следующая команда возобновляет работу всех приостановленных служб:
get-service | where-object {$_.Status -eq "Paused"} | resume-service
Командлет Restart-Service перезапускает службу:
Restart-Service -Name spooler
Эта команда запускает все остановленные сетевые службы компьютера:
get-service net* | where-object {$_.Status -eq "Stopped"} | restart-service
Параметр —ComputerName у этих командлетов отсутствует, но их можно выполнить на удаленном компьютере с помощью командлета Invoke-Command или через пайп:
Например, чтобы перезапустите очередь печати на удаленном компьютере RM1, выполните команду:
Get-Service Spooler -ComputerName RM1 | Start-Service
Set-Service – изменение настроек службы Windows
Командлет Set-Service позволяет изменить параметры или настройки служб на локальном или удаленном компьютере. Так как состояние службы является свойством, этот командлет можно использовать для запуска, остановки и приостановки службы. Командлет Set-Service имеет параметр -StartupType, позволяющий изменять тип запуска службы.
Изменим тип запуска службы spooler на автоматический:
Set-Service spooler –startuptype automatic –passthru
Можно перевести службу на ручной (manual) запуск:
Set-Service spooler –startuptype manual –passthru
Создание и удаление служб Windows c помощью PowerShell
New-Service – командлет для создания новой службы в Windows. Для новой службы требуется указать имя и исполняемый файл (вы можете запустить PowerShell скрипт как службу Windows).
В примере создадим новую службу с именем TestService.
new-service -name TestService -binaryPathName "C:\WINDOWS\System32\svchost.exe -k netsvcs"
С помощью параметра Get-WmiObject получим информацию о режиме запуска и описание службы
get-wmiobject win32_service -filter "name='testservice'"
Изменить параметры новой службы можно командой
Set-Service -Name TestService -Description ‘My Service’ -StartupType Manual
Чтобы удалить службу используйте команду
(Get-WmiObject win32_service -Filter ″name=′TestService′″).delete()
Изменение учетной записи для запуска службы
Вы можете изменить учетную запись, из-под которой запускается служба. Получим имя учетной записи, которая используется для запуска службы TestService
get-wmiobject win32_service -filter "name='TestService'" | Select name,startname
Для изменения имени и пароля учетной записи выполняем команды.
$svc = get-wmiobject win32_service -filter "name='TestService'"
$svc.GetMethodParameters("change")
В результате получаем список параметров метода Change(). Считаем на каком месте находятся параметры StartName и StartPassword – 20 и 21 место соответственно.
$svc | Invoke-WmiMethod -Name Change –ArgumentList @ ($null,$null,$null,$null,$null,$null,$null, $null,$null,$null,$null,$null,$null,$null,$null,$null, $null,$null,$null,"Administrator","P@ssw0rd")
Либо вы можете указать имя gMSA аккаунта. Пароль при этом не указывается.
Как видите, PowerShell позволяет легко управлять службами Windows. Можно создавать, останавливать, запускать и возобновлять службы, менять их свойства. Большинство командлетов позволяют управлять службами на удаленных компьютерах.
Время на прочтение8 мин
Количество просмотров116K
Продолжаем знакомиться с тем, как осуществлять управление службами Windows с использованием PowerShell. В предыдущем посте мы рассмотрели, как получить статус службы на локальном и удаленном компьютере, произвести фильтрацию служб (например, найти только остановленные службы) и определить зависимые службы. В этом посте будут рассмотрены такие достаточно тривиальные вещи, как:
- Остановка службы
- Запуск службы
- Перезапуск службы
- Приостановка и возобновление работы
- Управление удаленными службами
- Настраиваем автозагрузку службы
Мы уделим большее внимание разбору команд в PowerShell для осуществления выше перечисленного на локальном компьютере. В разделе “управление службами удаленных компьютерах” мы рассмотрим, ограничения работы в PowerShell v2 и v3. Подробности под катом.
Предыдущая статья:
Управляем службами Windows с помощью PowerShell. Часть 1. Получаем статус служб
PS C:\> get-service bits
Status Name DisplayName
------ ---- -----------
Running bits Background Intelligent Transfer Ser...
Так как команда для получения статуса службы называется Get-Service, догадаться о том, как пишутся другие команды не составит труда. На худой конец мы можем спросить у PowerShell обо всех командах, так или иначе относящихся к работе со службами. Обратите внимание, что мы использовали параметр –noun для получения всех команд, связанных со службами.
Взглянем на эти команды внимательнее.
STOP-SERVICE
Чтобы остановить службу, мы должны уточнить ее имя.
PS C:\> stop-service wuauserv
Однако в конвейер ничего не будет передано. Некоторые командлеты, такие как Stop-Service, созданы таким образом, что по умолчанию они не записывают объект в конвейер. Мы же заставим это сделать, использовав параметр –Passthru.
PS C:\> stop-service bits -PassThru
Status Name DisplayName
------ ---- -----------
Stopped bits Background Intelligent Transfer Ser...
Если служба не запущена, то командлет ничего не выведет, равно как и не выдаст никакой ошибки. Поэтому иногда лучше передать объект в Stop-Service (естественно использовав при этом параметр –whatif).
PS C:\> get-service browser | stop-service -WhatIf
What if: Performing operation “Stop-Service” on Target “Computer Browser (browser)”.
Параметр –WhatIf был добавлен для того, чтобы мы посмотрели, что будет, если командлет будет запущен. Когда я удостоверюсь, что это именно та служба, которая меня интересует, я просто удалю -Whatif и остановлю службу.
PS C:\> get-service browser | stop-service
Как я уже упомянул выше, если служба уже остановлена, то командлет ничего не сделает. И использование Stop-Service в этом случае никому не навредит. Однако я все же предпочитают более цивилизованный подход, а именно:
PS C:\> get-service bits | where {$_.status -eq 'running'} | stop-service -pass
Status Name DisplayName
------ ---- -----------
Stopped bits Background Intelligent Transfer Ser...
Если служба запущена, то объект передается в конвейер и отправляется в Stop-Service. Ниже приведен вариант с остановкой нескольких служб.
PS C:\> get-service bits,wsearch,winrm,spooler | where {$_.status -eq 'running'} | stop-service -whatif
What if: Performing operation "Stop-Service" on Target "Print Spooler (spooler)".
What if: Performing operation "Stop-Service" on Target "Windows Remote Management (WS-Management) (winrm)".
What if: Performing operation "Stop-Service" on Target "Windows Search (wsearch)".
Некоторые службы не захотят останавливаться – в силу наличия зависимых служб – что мы и видим на скриншоте ниже.
В таком случае используем параметр –Force. В большинстве случаев это работает, но без “защиты от дурака”. Помните, что команда также остановит зависимые службы.
PS C:\> stop-service lanmanserver -force –PassThru
Status Name DisplayName
------ ---- -----------
Stopped Browser Computer Browser
Stopped lanmanserver Server
START-SERVICE
Запуск службы осуществляется аналогичным образом. Он поддерживает параметр –Whatif, и вам придется использовать –Passthru, чтобы увидеть объекты.
PS C:\> start-service wuauserv -PassThru
Status Name DisplayName
------ ---- -----------
Running wuauserv Windows Update
И снова: если служба уже запущена, командлет ничего не сделает. Однако вы можете попытаться запустить службу и получите такую ошибку.
Причиной тому в большинстве случаев является выключенные службы. Как конфигурировать настройки службы, я расскажу в следующей статье.
Если вы хотите запустить службы и все службы, зависимые от нее, используйте следующее выражение:
PS C:\> get-service lanmanserver | Foreach { start-service $_.name -passthru; start-service $_.DependentServices -passthru}
Status Name DisplayName
------ ---- -----------
Running lanmanserver Server
Running Browser Computer Browser
Мы должны явно получить зависимые службы, потому что Start-Service не запустит автоматически их.
RESTART-SERVICE
Вы удивитесь, но перезапуск службы работает также как два предыдущих примера. Используйте –Passthru, если хотите убедиться, что служба запущена.
PS C:\> restart-service spooler -PassThru
Status Name DisplayName
------ ---- -----------
Running spooler Print Spooler
Так как мы осуществляем остановку службы, нам может понадобиться параметр –Force.
ПРИОСТАНОВКА И ВОЗОБНОВЛЕНИЕ РАБОТЫ
Работа некоторых служб может быть приостановлена на некоторое время, а затем возобновлена, и мы можем это сделать через PowerShell. Однако если служба не удовлетворяет требованиям, мы получим такие ошибки. (на примере показано, что мы пытались приостановить службу bits)
В чем же проблема? Смотрим на объект (используя Get-Service).
PS C:\> get-service bits | select *
Name : bits
RequiredServices : {RpcSs, EventSystem}
CanPauseAndContinue : False
CanShutdown : False
CanStop : True
DisplayName : Background Intelligent Transfer Service
DependentServices : {}
MachineName : .
ServiceName : bits
ServicesDependedOn : {RpcSs, EventSystem}
ServiceHandle : SafeServiceHandle
Status : Running
ServiceType : Win32ShareProcess
Site :
Container :
Если значение свойства CanPauseAndContinue равно True, значит мы можем приостанавливать и возобновлять работу службы. Найдем такие службы:
PS C:\> get-service | where {$_.CanPauseandContinue}
Status Name DisplayName
------ ---- -----------
Running LanmanServer Server
Running LanmanWorkstation Workstation
Running MSSQLSERVER SQL Server (MSSQLSERVER)
Running O2FLASH O2FLASH
Running stisvc Windows Image Acquisition (WIA)
Running Winmgmt Windows Management Instrumentation
Как мы видим, не так много служб удовлетворяют этому требованию.
PS C:\> suspend-service o2flash -PassThru
Status Name DisplayName
------ ---- -----------
Paused O2FLASH o2flash
Готовы возобновить работу службы? Используйте следующее выражение:
PS C:\> resume-service o2flash -PassThru
Status Name DisplayName
------ ---- -----------
Running O2FLASH o2flash
Оба командлета также поддерживают –Whatif.
УДАЛЕННЫЕ СЛУЖБЫ
Как вы могли обратить внимание, все примере выше мы демонстрировали на локальном машине. И это неслучайно. К сожалению даже в PowerShell v3, ни у одного из этих командлетов нет параметра, который позволял бы управлять службой на удаленном компьютере. Get-Service, конечно, поддерживает параметр –Computername, но не более. Службу лицезреть вы сможете, а что-либо с ней сделать не получится. Нет, можно, конечно, если удаленный компьютер работает с PS v2 и включен PowerShell Remoting. Тогда мы можете использовать все выше приведенные команды, используя Invoke-Command для удаленного компьютера или PSSession. С другой стороны, проще управлять одной службой на нескольких серверах.
PS C:\> Invoke-Command {restart-service dns –passthru} –comp chi-dc03,chi-dc02,chi-dc01
Управление службами на удаленных компьютерах не ограничивается вышеперечисленным, но это уже будет предмет рассмотрения последующих статей.
Все эти командлеты могут быть использованы в конвейерном выражении и зачастую это лучший вариант. Использование Get-Service для получения объектов и последующая передача их в подходящий командлет.
УСТАНАВЛИВАЕМ УДАЛЕННЫЙ СТАТУС
Итак, мы выяснили, что у командлета Stop-Service отсутствует такой полезный параметр как –Computername. Мы можете использовать эти команды в удаленной сессии, обратившись к командлету Invoke-Command, что уже само по себе продуктивно, если вы работаете со службой на нескольких компьютерах. Одно можно запускать, останавливать, перезапускать, ставить на паузу и запускать заново, используя Set-Service.
PS C:\> set-service wuauserv -ComputerName chi-dc03 -Status stopped -WhatIf
What if: Performing operation "Set-Service" on Target "Windows Update (wuauserv)".
Эта команда поддерживает параметр –WhatIf. Вы также должны использовать –Passthru для передачи объектов в конвейер.
PS C:\> set-service bits -ComputerName chi-dc03 -Status running -PassThru
Status Name DisplayName
------ ---- -----------
Running bits Background Intelligent Transfer Ser...
Валидными значениям для параметра –Status являются “запущена” (running), “остановлена” (stopped) и “на паузе” (paused). Помните, что у службы есть зависимые службы, мы не сможете изменять ее, что и продемонстрировано на скриншоте ниже.
К сожалению, у Set-Service отсутствует параметр –Force, поэтому придется вернуться к использованию PowerShell remoting и Invoke-Command. Если вы хотите перезапустить удаленную службу, используйте следующую команду:
PS C:\> set-service w32time -ComputerName chi-dc03 -Status Stopped -PassThru | set-service -PassThru -Status Running
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time
Не забудьте использовать –Passthru, в противном случае вторая команда Set-Service ничего не осуществит.
Что по мне, так я предпочитаю работать сразу с несколькими службами, которые я не могу удаленно остановить, используя Set-Service, хотя их запуск проблем составляет. Я использую Invoke-Command. Но помните, что используя параметр –Computername PowerShell осуществляет подключение, используя RPC и DCOM, что может привести к проблемам с файрволом. Invoke-Command использует PowerShell remoting, который мы может быть еще не настроили или не включили.
УСТАНАВЛИВАЕМ ТИП АВТОЗАПУСКА СЛУЖБЫ
Set-Service полезнен, когда вы хотите включить или отключить службу, используя параметр –StartupType. Если Вы настроили службу, используя значения Automatic, Manual or Disabled. К сожалению, не существует варианта для Automatic (Delayed).
PS C:\> set-service remoteregistry -StartupType Manual -WhatIf
What if: Performing operation "Set-Service" on Target "Remote Registry (remoteregistry)".
PS C:\> set-service remoteregistry -StartupType Manual -PassThru
Status Name DisplayName
------ ---- -----------
Stopped remoteregistry Remote Registry
Однако, просто взглянув на объект, мы не сможем сказать, к какому типу автозагрузки он относится.
PS C:\> get-service remoteregistry | select *
Name : remoteregistry
RequiredServices : {RPCSS}
CanPauseAndContinue : False
CanShutdown : False
CanStop : False
DisplayName : Remote Registry
DependentServices : {}
MachineName : .
ServiceName : remoteregistry
ServicesDependedOn : {RPCSS}
ServiceHandle : SafeServiceHandle
Status : Stopped
ServiceType : Win32ShareProcess
Site :
Container :
Как это сделать – одна из тем следующей статьи.
Помните, что изменение типа автозагрузки не повлияет на текущий статус службы.
PS C:\> set-service remoteregistry -StartupType Disabled -PassThru
Status Name DisplayName
------ ---- -----------
Running remoteregistry Remote Registry
Так что если вы хотите выключить и остановить (или включить и запустить) службу, передайте объект в подходящий командлет.
PS C:\> set-service remoteregistry -StartupType Disabled -PassThru | Stop-Service -PassThru
Status Name DisplayName
------ ---- -----------
Stopped remoteregistry Remote Registry
Технически, Set-Service позволяет вам изменить отображаемое имя службы и описание, но лично мне никогда не приходилось использовать в своей работе. Я использую Set-Service для включения и выключения служб. Если необходимо управлять службами удаленно, то я использую Invoke-Command.
Все, что я продемонстрировал в последних статьях, было связано с использованием специфических типов объектов службы, которые, как вы могли заметить, имеют некоторые ограничения. В следующей статье мы рассмотрим другие возможности по управлению службами, которые призваны обойти эти ограничения.
Upd:
В посте приведены переводы статей с портала 4sysops.com
Managing Services the PowerShell way – Part 3
Managing Services the PowerShell way – Part 4