Správa služieb Windows pomocou PowerShell

V systéme Windows môžete spravovať služby nielen z grafickej konzoly services.msc alebo z príkazového riadka Sc.exe (pôvodne zahrnutého v Resource Kit), ale tiež pomocou PowerShell. V tomto článku sa zameriavame na rôzne scenáre pre správu služieb Windows pomocou PowerShell..

obsah:

  • Základné rutiny PowerShell na správu služieb Windows
  • Zastavte, spustite, pozastavte a reštartujte služby z prostredia PowerShell
  • Set-Service - zmena nastavení služby Windows
  • Vytváranie a odstraňovanie služieb Windows pomocou PowerShell
  • Ak chcete službu spustiť, zmeňte účet

Základné rutiny PowerShell na správu služieb Windows

Existuje osem jadier služieb cmdlet určených na zobrazenie stavu a správu služieb Windows.

Ak chcete získať celý zoznam servisných cmdletov, zadajte príkaz:

Získať pomoc \ * - Servis

  • Získajte servis - umožňuje získať služby na lokálnom alebo vzdialenom počítači, spustené aj zastavené;
  • Nová služba - vytvoriť službu. Vytvorí nový záznam pre službu Windows v databáze registrov a služieb;
  • Reštartujte službu - reštartujte službu. Odošle správu o reštartovaní služby prostredníctvom ovládača služieb Windows
  • Pokračujte v službe - obnoviť službu. Odošle správu o pokračovaní správcovi služieb Windows;
  • Set-Service - Zmeňte nastavenia miestnej alebo vzdialenej služby vrátane stavu, popisu, zobrazovaného názvu a režimu spustenia. Tento cmdlet sa dá tiež použiť na spustenie, zastavenie alebo pozastavenie služby;
  • Start-Service - spustiť službu;
  • Zastavte službu - zastaviť službu (odošle správu o zastavení správcovi služby Windows);
  • Pozastaviť službu pozastaviť službu. Pozastavená služba stále beží, ale prestane fungovať, kým sa služba neobnoví, napríklad pomocou rutiny Resume-Service.

Podrobný popis a príklady použitia konkrétneho rutiny cmdlet nájdete v téme Získať pomoc:

Get-Help Start-Service

Get-Service: získajte zoznam služieb a ich stav

Pomocou rutiny cmdlet môžete načítať zoznam a stav (bežiaci / zastavený) služby na lokálnom alebo vzdialenom počítači. Získajte servis. Voľba -Name umožňuje výber podľa názvu služby. Názov služby je možné zadať pomocou zástupného znaku *.

Ak nepoznáte presný názov služby, pomocou parametra je možné nájsť služby podľa zobrazovaného názvu -DisplayName. Môžete použiť zoznam hodnôt a zástupných znakov.

.

cmdlet Získajte servis možno použiť na získanie stavu služieb na vzdialených počítačoch zadaním parametra -ComputerName. Na mnohých vzdialených počítačoch môžete okamžite zistiť stav služby. Ich mená musia byť uvedené čiarkou. Napríklad nasledujúci príkaz získa stav služby zaraďovača na vzdialených počítačoch RM1 a RM2.

Zaraďovač servisu za službu - názov počítača RM1, RM2

Status Name DisplayName ------ ---- ----------- Spooler Print Spooler Zastavenie Spooler Print Spooler

Rutina Select-Object zobrazí všetky vlastnosti služby:

Zaraďovač služieb Vybrať objekt *

cmdlet Select-Object zobrazí niektoré vlastnosti služby. Napríklad musíme zobraziť názov, stav a dostupné funkcie služby zaraďovača:

Get-Service Spooler | Vyberte DisplayName, Status, ServiceName, Can *

cmdlet Získajte servis má dva parametre, ktoré vám umožňujú získať závislosť od servisu:

  • parameter -DependentServices umožňuje zobraziť služby, ktoré závisia od tejto služby;
  • parameter -RequiredServices umožňuje zobraziť služby, od ktorých táto služba závisí.

Nasledujúci príkaz zobrazuje služby potrebné na spustenie služby zaraďovača:

Služba Get-Service - Spooler -RequiredServices

Nasledujúci príkaz zobrazuje služby, ktoré závisia od služby zaraďovača:

Služba Get-Service - Spooler -DependentServices

Ak potrebujete nájsť služby s konkrétnym stavom alebo nastaveniami, použite rutinu cmdlet Kde-Object. Získame napríklad zoznam spustených služieb so stavom Spustenie:

Get-Service | Where-Object $ _. Status -eq 'running'

Ak chcete zobraziť služby so spúšťacím typom manuálu, spustite príkaz

Get-Service | Where-Object $ _. Starttype -eq 'Manual'

Skontrolujte, či má systém špecifikovanú službu:

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

Hostiteľ zápisu "ServiceTest existuje"

Zastavte, spustite, pozastavte a reštartujte služby z prostredia PowerShell

Službu môžete zastaviť pomocou rutiny cmdlet Zastavte službu. Ak chcete zastaviť tlačovú službu, spustite príkaz:

Služba Stop-Service-Spooler

Rutina Stop-Service po spustení nezobrazuje žiadne údaje. Ak chcete vidieť výsledok príkazu, použite parameter -PassThru.

Upozorňujeme, že nie všetky služby môžu byť zastavené. Ak existujú závislé služby, potom sa zobrazí chyba

Nie je možné zastaviť službu, pretože má závislé služby. Môže sa zastaviť, iba ak je nastavený príznak sily.

Ak chcete vynútiť zastavenie, použite parameter -sila. Musíte si uvedomiť, že všetky závislé služby sa tiež zastavia:

Stop-Service samss -Force -Passthru

Nasledujúci príkaz zastaví uvedené služby (bity, zaraďovacie služby) so stavom „Running“:

bitové servisné bity, zaraďovacie | kde $ _. status -eq 'running' |. stop-service -passthru

Niekedy služby zastavia v stave zastavenia a ich procesy musia byť násilne ukončené.

cmdlet Start-Service spustí zastavené služby:

Start-Service - Spooler -PassThru

Služba sa nespustí, ak existujú služby závislé od zastavenia. Postup ich nájdenia a povolenia:

samoobsluha | Foreach start-service $ _. Name -passthru; start-service $ _. DependentServices -passthru

cmdlet Pozastaviť službu môžu pozastaviť služby, ktoré umožňujú dočasné pozastavenie a obnovenie. Pomocou rutiny cmdlet získate informácie o schopnosti dočasne pozastaviť konkrétnu službu. Získajte servis s majetkom “CanPauseAndContinue".

Get-Service samss | Názov formátu-zoznamu, môže sa pokračovať a pokračovať

Ak chcete zobraziť zoznam všetkých služieb, ktoré môžu byť pozastavené, zadajte príkaz:

Get-Service | Where-Object $ _. Canpauseandcontinue -eq "True"

Pozastavenie služby SQLBrowser:

Služba pozastavenia - meno SQLBrowser

Ak chcete obnoviť pozastavenú službu, použite rutinu cmdlet Resume-service:

Obnoviť službu - meno SQLBrowser

Nasledujúci príkaz obnoví všetky pozastavené služby:

poskytovanie služieb | where-object $ _. Status -eq "Paused" | resume-service

cmdlet Reštartujte službu reštartuje službu:

Reštartujte službu - zaraďovač mien

Tento príkaz spustí všetky zastavené sieťové služby počítača:

sieť na poskytovanie služieb * | where-object $ _. Status -eq "Stopped" | reštart-service

parameter -ComputerName tieto rutiny cmdlet chýbajú, ale je ich možné spustiť na vzdialenom počítači pomocou rutiny cmdlet Vyvolajte príkaz alebo potrubím:

Napríklad na reštartovanie tlačového frontu na vzdialenom počítači RM1 spustite príkaz:
Zaraďovač servisných služieb - názov počítača RM1 | Start-Service

V predvolenom nastavení môžu v systéme Windows spúšťať / zastavovať služby iba správcovia, ale bežným používateľom môžete udeliť privilégiá na reštartovanie konkrétnej služby.

Set-Service - zmena nastavení služby Windows

cmdlet Set-Service umožňuje zmeniť nastavenia alebo nastavenia služieb na lokálnom alebo vzdialenom počítači. Pretože stav služby je vlastnosť, táto rutina sa môže použiť na spustenie, zastavenie a pozastavenie služby. cmdlet Set-Service má parameter -StartupType, čo vám umožní zmeniť typ začatia služby.

Zmeňte typ spustenia služby zaraďovača na automatický:

Zaraďovač služieb set -startuptype automatic -passthru

Službu môžete presunúť na manuálne spustenie:

Zaraďovač služieb Set-Service manuálne spustenie typu -passthru

Vytváranie a odstraňovanie služieb Windows pomocou PowerShell

Nová služba - cmdlet na vytvorenie novej služby v systéme Windows. Pre novú službu musíte zadať názov a spustiteľný súbor (skript PowerShell môžete spustiť ako službu Windows).

V príklade vytvorte novú službu s názvom TestService.

new-service -name TestService -binaryPathName "C: \ WINDOWS \ System32 \ svchost.exe -k netsvcs"

Pomocou parametra Get-WmiObject získame informácie o režime spustenia a popis služby

get-wmiobject win32_service -filter "name = 'testservice'"

Pomocou príkazu môžete zmeniť parametre novej služby

Nastaviť službu - Názov TestService - Popis „Moja služba“ - Príručka ŠtartupType

Ak chcete službu odstrániť, použite príkaz

(Get-WmiObject win32_service -Filter "name = 'TestService'"). Odstrániť ()

Ak chcete službu spustiť, zmeňte účet

Môžete zmeniť účet, pod ktorým sa služba začína. Získajte názov účtu, ktorý sa používa na spustenie testovacej služby

get-wmiobject win32_service -filter "name = 'TestService'" | | Vyberte meno, meno a priezvisko

Ak chcete zmeniť názov účtu a heslo, vykonajte príkazy.

$ svc = get-wmiobject win32_service -filter "name = 'TestService'"
$ svc.GetMethodParameters ("change")

Výsledkom je zoznam parametrov metódy Change (). Uvažujeme o tom, kde sa nachádzajú parametre StartName a StartPassword - 20, respektíve 21.

$ svc | Invoke-WmiMethod - zmena názvu -ArgumentList @ ($ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, „správca“, „P @ ssw0rd“)

Alebo môžete zadať názov účtu gMSA. Heslo nie je zadané.

Ako vidíte, PowerShell uľahčuje správu služieb Windows. Môžete vytvárať, zastavovať, spúšťať a obnovovať služby, meniť ich vlastnosti. Väčšina rutín vám umožňuje spravovať služby na vzdialených počítačoch..