Управление на Windows услуги с PowerShell

В Windows можете да управлявате услуги не само от графичната конзола services.msc или от помощната програма за команден ред Sc.exe (първоначално включена в Resource Kit), но и с помощта на PowerShell. В тази статия разглеждаме различни сценарии за управление на услуги на Windows с помощта на PowerShell..

Съдържание:

  • Основни командлети PowerShell за управление на Windows услуги
  • Спиране, стартиране, пауза и рестартиране на услуги от PowerShell
  • Set-Service - промяна на настройките на услугата на Windows
  • Създаване и премахване на Windows услуги с PowerShell
  • Променете акаунта, за да стартирате услугата

Основни командлети PowerShell за управление на Windows услуги

Има осем основни командлети за услуги, предназначени да преглеждат състоянието и да управляват услугите на Windows.

За да получите целия списък с командлети за услуги, въведете командата:

Получете Помощ \ * - Услуга

  • Получете услуга - ви позволява да получавате услуги на локалния или отдалечен компютър, както стартирани, така и спрени;
  • Нова услуга - създайте услуга. Създава нов запис за услугата Windows в базата данни на системния регистър и услуги;
  • Рестартирайте услугата - рестартирайте услугата. Изпраща съобщение за рестартиране на услугата чрез Windows Service Controller
  • Възобновете услугата - възобнови услугата. Изпраща възобновяващо съобщение до Windows Service Manager;
  • Set-Service - Променете локални или отдалечени настройки на услугата, включително състояние, описание, име на екрана и режим на стартиране. Този командлет може да се използва и за стартиране, спиране или пауза на услуга;
  • Старт-Service - стартирайте услугата;
  • Спиране на услугата - спрете услугата (изпраща съобщение за спиране до Windows Service Manager);
  • Прекъсване на услугата пауза на услугата. Прекратената услуга все още работи, но тя спира да работи, докато услугата възобнови, например, използвайки командлета Resume-Service.

За подробно описание и примери за използване на определен командлет, използвайте Get-help:

Помощ за стартиране на услугата

Get-Service: получите списък на услугите и тяхното състояние

Можете да използвате командлета, за да извлечете списъка и състоянието (Изпълнение / Спиране) на услуга на локален или отдалечен компютър. Получете услуга. Опцията -Name позволява избор по име на услугата. Името на услугата може да бъде определено с помощта на символа *.

Ако не знаете точното име на услугата, е възможно да намерите услуги по екранно име с помощта на параметъра -DisplayName. Можете да използвате списък със стойности и символи.

.

кратката команда Получете услуга може да се използва за получаване на статуса на услугите на отдалечени компютри, като посочите параметъра -име_на_компютъра. Можете да направите заявка за състоянието на услуга веднага на много отдалечени компютри; имената им трябва да бъдат посочени със запетая. Например следната команда получава статуса на услугата Spooler на отдалечени компютри RM1 и RM2.

Get-Service спойлер -ComputerName RM1, RM2

Статус Име DisplayName ------ ---- ----------- Изпълняващ спойлер Print Spooler Спиран спойлер Print Spooler

За да покаже всички свойства на услугата, командлерът Select-Object ще позволи:

Get-Service спойлер | Select-Object *

кратката команда Изберете Object- ще покаже определени свойства на услугата. Например, трябва да покажем името, състоянието и наличните функции на услугата Spooler:

Get-Service Spooler | Изберете DisplayName, Status, ServiceName, Can *

кратката команда Получете услуга има два параметъра, които ви позволяват да получите зависимости от услугата:

  • параметър -DependentServices ви позволява да показвате услуги, които зависят от тази услуга;
  • параметър -RequiredServices ви позволява да показвате услугите, от които зависи тази услуга.

Следващата команда показва услугите, необходими за стартиране на услугата Spooler:

Get-Service -Name Spooler -RequiredServices

Следващата команда показва услуги, които зависят от услугата Spooler:

Get-Service -Name Spooler -DependentServices

Ако трябва да намерите услуги с конкретно състояние или настройки, използвайте командлета Къде-Object. Например, получаваме списък на изпълняващите се услуги със състояние на Running:

Get-Service | Къде-обект $ _. Статус -eq 'работи'

За да покажете услугите със стартиращ тип Ръчен, изпълнете командата

Get-Service | Къде-обект $ _. Starttype -eq 'Ръководство'

Проверете дали системата има указаната услуга:

if (Get-Service "ServiceTest" -ErrorAction SilentlyContinue)

Хост за запис "ServiceTest съществува"

Спиране, стартиране, пауза и рестартиране на услуги от PowerShell

Можете да спрете услугата с помощта на командлета Спиране на услугата. За да спрете услугата за печат, изпълнете командата:

Stop-Service - Име на спойлера

Командлерът Stop-Service не показва никакви данни след изпълнение. За да видите резултата от командата, използвайте параметъра -PassThru.

Моля, обърнете внимание, че не всяка услуга може да бъде спряна. Ако има зависими услуги, тогава получете грешка

Не може да спре услугата, защото има зависими услуги. Той може да бъде спрян само ако е зададен флаг за сила.

За да принудите спиране, използвайте параметъра -сила. Трябва да запомните, че всички зависими услуги също ще спрат:

Stop-Service samss -Force -Passthru

Следващата команда ще спре изброените услуги (битове, спойлер) със статус "Работещ":

битове за обслужване, спойлер | където $ _. статус -eq 'работи' | стоп-сервиз -passthru

Понякога услугите замръзват в състояние на спиране и техните процеси трябва да бъдат прекратени насила.

кратката команда Старт-Service стартира спрени услуги:

Start-Service -Name spooler -PassThru

Услугата няма да стартира, ако има спрени зависими услуги. За да ги намерите и активирате:

get-service samss | Foreach start-service $ _. Име -passthru; start-service $ _. DependentServices -passthru

кратката команда Прекъсване на услугата може да спре услуги, които позволяват временно спиране и възобновяване. Използвайте командлета, за да получите информация за възможността за временно спиране на конкретна услуга. Получете услуга с имот "CanPauseAndContinue".

Get-Service samss | Наименование на списъка на форматите, canpauseandcontinue

За да се покаже списък на всички услуги, които могат да бъдат поставени на пауза, въведете командата:

Get-Service | Къде-обект $ _. Canpauseandcontinue -eq "True"

Спиране на услугата SQLBrowser:

Suspend-Service -Name SQLBrowser

За да възобновите спрената услуга, използвайте командлета Resume-сервиз:

Resume-Service -Name SQLBrowser

Следващата команда възобновява всички поставени на пауза услуги:

get-service | където-object $ _. Status -eq "На пауза" | автобиография услуги

кратката команда Рестартирайте услугата рестартира услугата:

Restart-Service -Name спойлер

Тази команда стартира всички спрени мрежови услуги на компютъра:

мрежа за получаване на услуги * | където-обект $ _. Статус -eq "Спиран" | рестартиране услуги

параметър -име_на_компютъра тези командлети липсват, но те могат да бъдат стартирани на отдалечен компютър с помощта на командлета Извикайте командата или чрез тръба:

Например, за да рестартирате опашката за печат на отдалечения компютър RM1, изпълнете командата:
Get-Service Spooler -ComputerName RM1 | Старт-Service

По подразбиране само администраторите могат да стартират / спират услуги в Windows, но можете да предоставите привилегии за рестартиране на конкретна услуга на обикновените потребители.

Set-Service - промяна на настройките на услугата на Windows

кратката команда Set-Service ви позволява да промените настройките или настройките на услугите на локалния или отдалечен компютър. Тъй като състоянието на услугата е свойство, този командлет може да се използва за стартиране, спиране и пауза на услуга. кратката команда Set-Service има параметър -StartupType, което ви позволява да промените типа старт на услугата.

Променете типа на стартиране на услугата за спулер на автоматичен:

Set-Service spooler -стартиращ автоматичен -passthru

Можете да прехвърлите услугата до ръчен старт:

Set-Service спойлер - ръководство за стартиращ тип -passthru

Създаване и премахване на Windows услуги с PowerShell

Нова услуга - cmdlet за създаване на нова услуга в 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 -Описание 'My Service' -StartupType Ръководство

За да премахнете услуга, използвайте командата

(Get-WmiObject win32_service -Filter "name = 'TestService'"). Изтриване ()

Променете акаунта, за да стартирате услугата

Можете да промените акаунта, под който стартира услугата. Вземете името на акаунта, който се използва за стартиране на TestService

get-wmiobject win32_service -filter "name = 'TestService'" | Изберете име, начално име

За да промените името и паролата на акаунта, изпълнете командите.

$ svc = get-wmiobject win32_service -filter "name = 'TestService'"
$ svc.GetMethodParameters ("промяна")

В резултат на това получаваме списък с параметри на метода 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. Можете да създадете, спрете, стартирате и възобновите услуги, да промените техните свойства. Повечето командлети ви позволяват да управлявате услуги на отдалечени компютри..