Как удаленно остановить службу windows
При необходимости управлять и контролировать функционирование отдельных служб приложений или операционной системы «Windows 10» , пользователи могут воспользоваться различными доступными встроенными инструментами. И далее в данном руководстве мы подробно покажем четыре действенных способа, позволяющих добиться выполнения востребованной задачи.
Введение
Современные компьютерные устройства, особенно их наиболее востребованные образцы, представленные стационарными персональными компьютерами и ноутбуками широкого вариативного ряда конечной конфигурации, обладают значительным потенциалом, вследствие чего массово применяются потребителями во многих отраслях деятельности, как для исполнения профессиональных обязанностей, требующих учета и обработки огромных объемов данных, так и для различных личных целей.
Для обеспечения бесперебойного функционирования компьютерных устройств и безошибочного исполнения разнообразных, по уровню затрат и трудоемкости, процессов задействуется комплексное программное обеспечение. Наиболее востребованным образцом программной среды контроля, управления и полноценной организации рабочего процесса компьютеров среди доступных на выбор вариантов от различных доверенных разработчиков является операционная система «Windows» от специалистов корпорации «Microsoft» . Программная оболочка обладает мощным внутренним функционалом, обеспечивает поддержку подавляющего большинства приложений сторонних разработчиков и представлена в удобном и дружественном к конечным пользователям интерфейсе.
Инструментарий операционной системы, доступной в своей новейшей версии «Windows 10» , содержит специальные службы, которые представляют собой программы, осуществляющие свою деятельность в фоновом режиме, не имеющие пользовательского интерфейса и позволяющие системным функциям (таким как печать, взаимодействие по сети, удаленный доступ, проводник файлов «Windows» , поиск «Windows» , обновления и т.д.) и приложениям работать по своему прямому назначению.
Система довольно хорошо справляется с управлением фоновыми службами, но иногда пользователям может потребоваться осуществить управление данными программами вручную. Например, если функция или приложение работают некорректно, происходит его сбой или присутствует частое развитие ошибок, а также в случае, когда требование произвести управление службами пользователями вручную исходит непосредственно от конкретного приложения.
Операционная система «Windows 10» включает как минимум четыре способа для остановки, запуска, отключения или включения служб, позволяя выполнить востребованные операции с помощью ответственной консоли «Службы» , приложения «Диспетчер задач» , интерфейса командной строки и расширяемого средства автоматизации от «Microsoft» с открытым исходным кодом «Windows PowerShell» .
И далее в данном руководстве, описывающем возможности «Windows 10» , мы расскажем, как управлять службами системы и приложений на пользовательском компьютере.
Как управлять службами через соответствующую выделенную стандартную консоль?
Использование встроенной консоли «Службы» , содержащей прямой доступ ко всем, участвующим в организации полноценного функционирования операционной системы и сторонних приложений, востребованным сервисам, возможно, является самым простым способом, позволяющим из единого интерфейса остановить, запустить, отключить или включить одну, или несколько, служб в «Windows 10» .
Остановить действующую службу
Чтобы остановить запущенную службу в операционной системе «Windows 10» с помощью ответственной консоли, пользователям потребуется выполнить следующий простой упорядоченный алгоритм пошаговых действий, непосредственно представленный далее.
Откройте системную консоль «Службы» , используя один из нескольких, доступных в операционной системе «Windows 10» , способов, наиболее удобный или привычный для каждого конкретного пользователя исходя из персональных предпочтений. Например, нажмите левой кнопкой мыши на закрепленной «Панели задач» в нижнем левом углу рабочего стола на кнопку «Пуск» , представленную в виде схематической «проекции окна» , и откройте главное пользовательское меню «Windows» . В упорядоченном перечне установленных в операционной системе инструментов и сторонних приложений, применяя для перемещения по вложенным элементам меню колесо вращения компьютерной мыши или ползунок полосы прокрутки, отыщите и щелкните раздел «Средства администрирования Windows» .
В Windows вы можете управлять службами не только из графической консоли services.msc или утилиты командной строки Sc.exe (первоначальна включалась в пакет ресурсов Resource Kit), но и с помощью PowerShell. В этой статье мы смотрим различные сценарии управления службами Windows с помощью PowerShell.
Основные командлеты PowerShell для управления службами Windows
Существует восемь основных командлетов Service, предназначенных для просмотра состояния и управления службами Windows.
Чтобы получить весь список командлетов Service, введите команду:
Получить подробное описание и примеры использования конкретного командлета можно через Get-help:
Get-Service: получаем список служб и их состояние
Получить список и состояние (Running/Stopped) службы на локальном или удаленном компьютере можно с помощью командлета Get-Service. Параметр -Name позволяет делать отбор по имени службы. Имя службы можно задать с использованием подстановочного символа *.
Если вы не знаете точное имя службы, есть возможность найти службы по отображаемому имени с помощью параметра –DisplayName. Можно использовать список значений и подстановочные знаки.
.
Командлет Get-Service можно использовать для получения состояния служб на удаленных компьютерах, указав параметр -ComputerName. Можно опросить статус службы сразу на множестве удаленных компьютеров, их имена нужно перечислить через запятую. Например, приведенная ниже команда получает состояние службы Spooler на удаленных компьютерах RM1 и RM2.
Get-Service spooler –ComputerName RM1,RM2
Вывести все свойства службы позволит командлет 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:
Для вывода служб с типом запуска Manual, выполните команду
.starttype -eq " width="" />
.starttype -eq " width="" />
Проверить, что в системе имеется указанная служба:
if (Get-Service "ServiceTest" -ErrorAction SilentlyContinue)
Write-host "ServiceTest exists"
>
Остановка, запуск, приостановка и перезапуск служб из PowerShell
Остановить службу можно с помощью командлета Stop-Service. Чтобы остановить службу печати, выполните команду:
Stop-Service -Name spooler
Командлет Stop-Service не выводит никаких данных после выполнения. Чтобы увидеть результат выполнения команды, используйте параметр -PassThru.
Обратите внимание, что не каждую службу можно остановить. Если есть зависимые службы, то получите ошибку
Для принудительной остановки используйте параметр –Force. Вы должны помнить, что остановятся также все зависимые службы:
Stop-Service samss –Force -Passthru
Следующая команда остановит перечисленные службы (bits,spooler) со статусом ”Running”:
get-service bits,spooler | where | stop-service –passthru
Командлет Start-Service запускает остановленные службы:
Start-Service -Name spooler -PassThru
Служба не запустится, если есть остановленные зависимые службы. Чтобы их найти и включить:
get-service samss | Foreach
Get-Service samss | Format-List name, canpauseandcontinue
Чтобы отобразить список всех служб, работа которых может быть приостановлена, введите команду:
Приостановим службу SQLBrowser:
Suspend-Service -Name SQLBrowser
Для возобновления работы приостановленной службы служит командлет Resume-service:
Resume-Service -Name SQLBrowser
Следующая команда возобновляет работу всех приостановленных служб:
get-service | where-object | resume-service
Командлет Restart-Service перезапускает службу:
Restart-Service -Name spooler
Эта команда запускает все остановленные сетевые службы компьютера:
get-service net* | where-object | restart-service
Например, чтобы перезапустите очередь печати на удаленном компьютере 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. Можно создавать, останавливать, запускать и возобновлять службы, менять их свойства. Большинство командлетов позволяют управлять службами на удаленных компьютерах.
Так как команда для получения статуса службы называется Get-Service, догадаться о том, как пишутся другие команды не составит труда. На худой конец мы можем спросить у PowerShell обо всех командах, так или иначе относящихся к работе со службами. Обратите внимание, что мы использовали параметр –noun для получения всех команд, связанных со службами.
Взглянем на эти команды внимательнее.
STOP-SERVICE
Чтобы остановить службу, мы должны уточнить ее имя.
Однако в конвейер ничего не будет передано. Некоторые командлеты, такие как Stop-Service, созданы таким образом, что по умолчанию они не записывают объект в конвейер. Мы же заставим это сделать, использовав параметр –Passthru.
Если служба не запущена, то командлет ничего не выведет, равно как и не выдаст никакой ошибки. Поэтому иногда лучше передать объект в Stop-Service (естественно использовав при этом параметр –whatif).
Параметр –WhatIf был добавлен для того, чтобы мы посмотрели, что будет, если командлет будет запущен. Когда я удостоверюсь, что это именно та служба, которая меня интересует, я просто удалю -Whatif и остановлю службу.
Как я уже упомянул выше, если служба уже остановлена, то командлет ничего не сделает. И использование Stop-Service в этом случае никому не навредит. Однако я все же предпочитают более цивилизованный подход, а именно:
Если служба запущена, то объект передается в конвейер и отправляется в Stop-Service. Ниже приведен вариант с остановкой нескольких служб.
Некоторые службы не захотят останавливаться – в силу наличия зависимых служб – что мы и видим на скриншоте ниже.
В таком случае используем параметр –Force. В большинстве случаев это работает, но без “защиты от дурака”. Помните, что команда также остановит зависимые службы.
START-SERVICE
Запуск службы осуществляется аналогичным образом. Он поддерживает параметр –Whatif, и вам придется использовать –Passthru, чтобы увидеть объекты.
И снова: если служба уже запущена, командлет ничего не сделает. Однако вы можете попытаться запустить службу и получите такую ошибку.
Причиной тому в большинстве случаев является выключенные службы. Как конфигурировать настройки службы, я расскажу в следующей статье.
Если вы хотите запустить службы и все службы, зависимые от нее, используйте следующее выражение:
Мы должны явно получить зависимые службы, потому что Start-Service не запустит автоматически их.
RESTART-SERVICE
Вы удивитесь, но перезапуск службы работает также как два предыдущих примера. Используйте –Passthru, если хотите убедиться, что служба запущена.
Так как мы осуществляем остановку службы, нам может понадобиться параметр –Force.
ПРИОСТАНОВКА И ВОЗОБНОВЛЕНИЕ РАБОТЫ
Работа некоторых служб может быть приостановлена на некоторое время, а затем возобновлена, и мы можем это сделать через PowerShell. Однако если служба не удовлетворяет требованиям, мы получим такие ошибки. (на примере показано, что мы пытались приостановить службу bits)
В чем же проблема? Смотрим на объект (используя Get-Service).
Если значение свойства CanPauseAndContinue равно True, значит мы можем приостанавливать и возобновлять работу службы. Найдем такие службы:
Как мы видим, не так много служб удовлетворяют этому требованию.
Готовы возобновить работу службы? Используйте следующее выражение:
Оба командлета также поддерживают –Whatif.
УДАЛЕННЫЕ СЛУЖБЫ
Как вы могли обратить внимание, все примере выше мы демонстрировали на локальном машине. И это неслучайно. К сожалению даже в PowerShell v3, ни у одного из этих командлетов нет параметра, который позволял бы управлять службой на удаленном компьютере. Get-Service, конечно, поддерживает параметр –Computername, но не более. Службу лицезреть вы сможете, а что-либо с ней сделать не получится. Нет, можно, конечно, если удаленный компьютер работает с PS v2 и включен PowerShell Remoting. Тогда мы можете использовать все выше приведенные команды, используя Invoke-Command для удаленного компьютера или PSSession. С другой стороны, проще управлять одной службой на нескольких серверах.
Управление службами на удаленных компьютерах не ограничивается вышеперечисленным, но это уже будет предмет рассмотрения последующих статей.
Все эти командлеты могут быть использованы в конвейерном выражении и зачастую это лучший вариант. Использование Get-Service для получения объектов и последующая передача их в подходящий командлет.
УСТАНАВЛИВАЕМ УДАЛЕННЫЙ СТАТУС
Итак, мы выяснили, что у командлета Stop-Service отсутствует такой полезный параметр как –Computername. Мы можете использовать эти команды в удаленной сессии, обратившись к командлету Invoke-Command, что уже само по себе продуктивно, если вы работаете со службой на нескольких компьютерах. Одно можно запускать, останавливать, перезапускать, ставить на паузу и запускать заново, используя Set-Service.
Эта команда поддерживает параметр –WhatIf. Вы также должны использовать –Passthru для передачи объектов в конвейер.
Валидными значениям для параметра –Status являются “запущена” (running), “остановлена” (stopped) и “на паузе” (paused). Помните, что у службы есть зависимые службы, мы не сможете изменять ее, что и продемонстрировано на скриншоте ниже.
К сожалению, у Set-Service отсутствует параметр –Force, поэтому придется вернуться к использованию PowerShell remoting и Invoke-Command. Если вы хотите перезапустить удаленную службу, используйте следующую команду:
Не забудьте использовать –Passthru, в противном случае вторая команда Set-Service ничего не осуществит.
Что по мне, так я предпочитаю работать сразу с несколькими службами, которые я не могу удаленно остановить, используя Set-Service, хотя их запуск проблем составляет. Я использую Invoke-Command. Но помните, что используя параметр –Computername PowerShell осуществляет подключение, используя RPC и DCOM, что может привести к проблемам с файрволом. Invoke-Command использует PowerShell remoting, который мы может быть еще не настроили или не включили.
УСТАНАВЛИВАЕМ ТИП АВТОЗАПУСКА СЛУЖБЫ
Set-Service полезнен, когда вы хотите включить или отключить службу, используя параметр –StartupType. Если Вы настроили службу, используя значения Automatic, Manual or Disabled. К сожалению, не существует варианта для Automatic (Delayed).
Однако, просто взглянув на объект, мы не сможем сказать, к какому типу автозагрузки он относится.
Как это сделать – одна из тем следующей статьи.
Помните, что изменение типа автозагрузки не повлияет на текущий статус службы.
Так что если вы хотите выключить и остановить (или включить и запустить) службу, передайте объект в подходящий командлет.
Технически, Set-Service позволяет вам изменить отображаемое имя службы и описание, но лично мне никогда не приходилось использовать в своей работе. Я использую Set-Service для включения и выключения служб. Если необходимо управлять службами удаленно, то я использую Invoke-Command.
Все, что я продемонстрировал в последних статьях, было связано с использованием специфических типов объектов службы, которые, как вы могли заметить, имеют некоторые ограничения. В следующей статье мы рассмотрим другие возможности по управлению службами, которые призваны обойти эти ограничения.
Существует восемь основных командлетов Service, предназначенных для широкого спектра задач обслуживания. Мы рассмотрим только вывод списка служб и изменение состояния их выполнения, но вы можете получить весь список командлетов Service с помощью Get-Help *-Service , а сведения о каждом из них можно просмотреть с помощью командлета Get-Help <Cmdlet-Name> , например Get-Help New-Service .
Получение служб
Получить службы на локальном или удаленном компьютере можно с помощью командлета Get-Service . Как и в случае с Get-Process , использование команды Get-Service без параметров возвращает все службы. Можно фильтровать по имени, даже используя звездочку как подстановочный знак:
Так как реальное имя службы не всегда очевидно, может потребоваться найти службы по отображаемому имени. Это можно сделать с использованием определенного имени, подстановочных знаков или списка отображаемых имен:
Параметр ComputerName командлета Get-Service можно использовать для получения служб на удаленных компьютерах. Параметр ComputerName принимает несколько значений и подстановочные знаки, что позволяет получить службы на нескольких компьютерах с помощью одной команды. Например, приведенная ниже команда получает службы на удаленном компьютере Server01.
Получение необходимых и зависимых служб
Командлет Get-Service имеет два параметра, которые удобно использовать при администрировании служб. Параметр DependentServices получает службы, которые зависят от данной службы. Параметр RequiredServices получает службы, от которых зависит данная служба.
Эти параметры просто отображают значения свойств DependentServices и ServicesDependedOn (псевдоним RequiredServices) объекта System.ServiceProcess.ServiceController, возвращаемого Get-Service, но они упрощают работу с командами и получение этой информации.
Приведенная ниже команда получает службы, необходимые службе LanmanWorkstation.
Приведенная ниже команда получает службы, которым требуется служба LanmanWorkstation.
Вы даже можете получить все службы, имеющие зависимости. Следующая команда делает именно это, а затем она использует командлет Format-Table для отображения свойств Status, Name, RequiredServices и DependentServices для служб на компьютере.
Остановка, запуск, приостановка и перезапуск служб
Все командлеты Service имеют схожую общую форму. Службы можно указать по общему имени или отображаемому имени, они также принимают списки и подстановочные знаки в качестве значений. Для остановки очереди печати принтера используйте:
Для запуска очереди печати принтера после ее остановки используйте:
Для приостановки очереди печати принтера используйте:
Командлет Restart-Service работает так же, как другие командлеты Service, но для него будет приведено несколько более сложных примеров. В самом простом случае указывается имя службы:
Вы получите повторяющееся предупреждение о запуске очереди печати принтера. При выполнении операции службы, занимающей некоторое время, Windows PowerShell сообщит, что по-прежнему пытается выполнить задачу.
Если требуется перезапустить несколько служб, можно получить список служб, отфильтровать его и выполнить перезапуск:
У этих командлетов Service нет параметра ComputerName, но их можно выполнить на удаленном компьютере с помощью командлета Invoke-Command. Например, приведенная ниже команда перезапускает службу очередь печати принтера на удаленном компьютере Server01.
Задание свойств служб
Командлет Set-Service изменяет свойства службы на локальном или удаленном компьютере. Так как состояние службы является свойством, этот командлет можно использовать для запуска, остановки и приостановки службы. Командлет Set-Service также имеет параметр StartupType, позволяющий изменять тип запуска службы.
Чтобы использовать командлет Set-Service в Windows Vista и более поздних версиях Windows, откройте среду Windows PowerShell, используя параметр "Запуск от имени администратора".
В этом руководстве вы узнаете как использовать PowerShell для получения информации по службам, как использовать PowerShell для запуска служб, как использовать PowerShell для остановки служб и перезапуска!
Пришло время узнать, как управлять службами с помощью PowerShell.
В этом руководстве вы узнаете все о *-Service командлетах PowerShell, о том, как их использовать, а также создадите свой собственный сценарий для управления службами на многих компьютерах одновременно.
Содержание
- Предпосылки
- Использование PowerShell для вывода списка служб с помощью Get-Service
- Просмотр служб на удаленных ПК
- Get-Service и удаленное взаимодействие с PowerShell
- Просмотр служб с помощью CIM / WMI
- Использование PowerShell Start-Service и Stop-Service
- Использование PowerShell и CIM для запуска / остановки служб
- Запуск / остановка удаленных служб с помощью PowerShell
- Использование Start и Stop-Service
- Использование командлета PowerShell Restart-Service
- Использование реестра
- Хотя бы один компьютер с Windows. Если у вас их несколько, это поможет научиться управлять несколькими компьютерами одновременно.
- Вы собираетесь использовать самую последнюю версию PowerShell. Удаленное взаимодействие PowerShell включено на всех компьютерах в сети, которые вы хотите задействовать.
Использование PowerShell для вывода списка служб с Get-Service
Обратите внимание, что на приведенном ниже скриншоте, в результате вывода командлета Get-Service будут перечислены все службы на локальном компьютере, а также Status, Name и DisplayName каждой службы.
Как и многие другие командлеты, PowerShell не возвращает все свойства для каждой службы. Если, например, вы хотите увидеть требуемые службы или, возможно, описание службы, вы можете просмотреть эти свойства, направив выходные данные в Select-Object используя * для представления всех свойств, как показано на следующем скриншоте.
Результат такого запроса будет выглядеть таким образом:
Просмотр служб на удаленных ПК
Возможно, вы находитесь в сети и вам нужно перечислить службы на одном или нескольких удаленных компьютерах с Windows.
Доступ к службам на удаленных ПК возможен двумя разными способами: удаленное взаимодействие PowerShell и CIM / WMI.Get-Service и удаленное взаимодействие PowerShell
Предполагая, что на удаленном компьютере включено удаленное взаимодействие PowerShell
Обратите внимание, что вам не нужен параметр Credential если Ваши ПК в домене (Active Directory (AD) .
На выходе мы получим список всех служб на ПК computer1
Вы также можете создать простой сценарий для просмотра служб на нескольких удаленных компьютерах.
Просмотр служб с помощью CIM / WMI
В некоторых ситуациях использование PowerShell Get-Serviceможет не подойти. Вместо этого вы можете запросить CIM / WMI через сеанс CIM. При использовании сеанса CIM использовать удаленное взаимодействие PowerShell необязательно.
Чтобы найти службы управления через CIM, необходимо:
Чтобы запускать и останавливать службы на удаленных компьютерах с помощью PowerShell, вам необходимо заключить эти команды в блок сценариев и использовать PowerShell Remoting для их удаленного вызова, как показано ниже.
Запуск / остановка служб с помощью PowerShell
Как и в случае с Get-Service, вы также можете использовать CIM для запуска и остановки служб. Хотя вы не можете напрямую использовать командлеты например Stop-Serviceми Start-Service. Вместо этого вам нужно вызвать метод. Хотя это менее интуитивно, но если вы уже освоились с CIM, вам это не помеха.
Если вы работаете с локальными службами, используйте Get-CimInstance. На этот раз ограничим количество сервисов только теми сервисами, которые мы хотим остановить или запустить с помощью и используем для этого параметр Filter. Параметр Filter (совместно с параметром Query) является отличным способом получить прицельный результаты.
Тот же код, приведенный выше, также может останавливать службы с помощью метода StopService изменив в запросе State параметр на на Started.
Запуск / остановка служб на компьютерах по сети с помощью PowerShell
Итак, мы разобрались, как запускать и останавливать службы локально, мы также можем распространить это на удаленные компьютеры, используя аналогичный код, используемый для просмотра служб.
Чтобы запускать и останавливать службы удаленно, мы можем использовать ранее созданный сеанс CIM, либо, если вы его удалили, создать еще один, как показано ниже.
Создав сеанс CIM используя командлет Invoke-CimMethod не забудьте удалить этот сеанс, когда закончите.
Использование PowerShell для перезапуска службы
Может быть, вы хотите перезапустить уже запущенную службу. Это не проблема для PowerShell. Опять же, у вас есть два пути.
Использование Start и Stop-Service
Можно просто остановить и запустить службу командлетами Stop-Service и Start-Service любым из двух способов показанных ниже.
Использование Restart-Service командлета PowerShell
Чтобы сократить код для перезапуска службы с помощью PowerShell, лучше использовать командлет Restart-Service. Этот командлет собственно для этого и предназначен.
Изменение типа запуска
Допустим, вам сначала просто нужно знать, какой тип запуска службы. Вы можете найти это с помощью Get-Service или CIM.
Вы можете быстро получить представление обо всех значениях типа запуска служб, используя, Group-Object показано ниже. На этом скриншоте показаны все возможные значения (в столбце Name) типа запуска доступные для службы.
Как только вы узнаете текущий тип запуска, вы можете изменить его, используя Set-Service
В приведенном ниже примере устанавливается тип запуска Disabled.
Использование реестра
Вы также можете установить тип запуска службы через реестр с помощью PowerShell. Все службы Windows хранятся в разделе реестра HKLM \ System \ CurrentControlSet \ Services . У каждого дочернего ключа службы есть вызываемое значение REG_DWORD, Start которое представляет тип запуска (исключая отложенный запуск).
Чтобы установить тип запуска для службы в реестре через PowerShell, используйте командлет Set-ItemProperty. Приведенный ниже фрагмент изменяет тип запуска службы wuauserv на автоматический.
Таблица определения значения REG_DWORD для всех типов запуска.
REG_DWORD Значение Тип запуска 0 Загружается (но не запускается) загрузчиком. 1 Запускается во время инициализации ядра после служб, параметр запуска которых равен 0. 2 Автоматически. Запускается smss.exe (диспетчер сеансов) или services.exe (контроллер служб). 3 Вручную. Запускается диспетчером управления службами (SCM). 4 Остановлена 5 Отложенный старт Вы также можете установить для службы отложенный запуск, установив для параметра реестра DelayedAutoStart значение 1 через Set-ItemProperty -Path «HKLM: \ System \ CurrentControlSet \ Services \ <имя службы>» -Name «DelayedAutostart» -Value 1 -Type DWORD .
Если вы хотите узнать больше об управлении службами с помощью PowerShell, обязательно ознакомьтесь с содержимым справки PowerShell запустив командлет Get-Help <имя командлета> .
Читайте также: