Správa Windows Services pomocí PowerShell

V systému Windows můžete spravovat služby nejen z grafické konzole services.msc nebo z obslužného programu příkazového řádku Sc.exe (původně součástí sady Resource Kit), ale také pomocí prostředí PowerShell. V tomto článku se podíváme na různé scénáře správy služeb Windows pomocí prostředí PowerShell..

Obsah:

  • Základní rutiny PowerShell pro správu služeb Windows
  • Zastavte, spusťte, pozastavte a restartujte služby z prostředí PowerShell
  • Set-Service - změna nastavení služby Windows
  • Vytváření a odebírání služeb Windows pomocí PowerShell
  • Chcete-li službu spustit, změňte účet

Základní rutiny PowerShell pro správu služeb Windows

Existuje osm jádrových servisních rutin navržených pro zobrazení stavu a správu služeb systému Windows.

Chcete-li získat celý seznam servisních rutin, zadejte příkaz:

Získat nápovědu \ * - Služba

  • Získejte servis - umožňuje získat služby na místním nebo vzdáleném počítači, a to jak spuštěných, tak zastavených;
  • Nová služba - vytvořit službu. Vytvoří novou položku pro službu Windows v databázi registru a služeb;
  • Restartujte službu - restartujte službu. Odešle zprávu o restartování služby prostřednictvím Windows Service Controller
  • Obnovte službu - obnovit službu. Odešle zprávu o obnovení systému Windows Service Manager;
  • Set-service - Změňte nastavení místní nebo vzdálené služby, včetně stavu, popisu, zobrazovaného názvu a režimu spuštění. Tuto rutinu lze také použít ke spuštění, zastavení nebo pozastavení služby;
  • Start-service - zahájit službu;
  • Zastavte službu - zastavit službu (odešle zprávu zastavení do Správce služeb systému Windows);
  • Pozastavte službu pozastavit službu. Pozastavená služba stále běží, ale přestane fungovat, dokud se služba neobnoví, například pomocí rutiny Resume-Service.

Podrobný popis a příklady použití konkrétní rutiny cmdlet naleznete v nápovědě:

Získejte pomoc při spuštění služby

Get-Service: získejte seznam služeb a jejich stav

Rutinu můžete použít k načtení seznamu a stavu (spuštění / zastavení) služby na místním nebo vzdáleném počítači. Získejte servis. Možnost -Name umožňuje výběr podle názvu služby. Název služby lze zadat pomocí zástupného znaku *.

Pokud neznáte přesný název služby, lze pomocí parametru najít služby podle zobrazovaného názvu -Zobrazované jméno. Můžete použít seznam hodnot a zástupných znaků.

.

Cmdlet Získejte servis lze použít ke zjištění stavu služeb na vzdálených počítačích zadáním parametru -Název_počítače. Na mnoha vzdálených počítačích můžete okamžitě zjistit stav služby, jejich jména musí být uvedena čárkou. Například následující příkaz získá stav služby zařazování na vzdálených počítačích RM1 a RM2.

Zařazovací služba Get-Service -ComputerName RM1, RM2

Status Name DisplayName ------ ---- ----------- Spooler Print Spooler Zastavení zařazování tisku Spooler

Chcete-li zobrazit všechny vlastnosti služby, cmdlet Select-Object umožní:

Zařazovací služba | Vybrat objekt *

Cmdlet Vyberte objekt zobrazí určité vlastnosti služby. Například musíme zobrazit název, stav a dostupné funkce služby zařazování:

Zařazovací služba | Vyberte DisplayName, Status, ServiceName, Can *

Cmdlet Získejte servis má dva parametry, které vám umožní získat servisní závislosti:

  • Parametr -DependentServices umožňuje zobrazit služby závislé na této službě;
  • Parametr -Povinné služby umožňuje zobrazit služby, na kterých tato služba závisí.

Následující příkaz zobrazí služby potřebné ke spuštění služby zařazování:

Služba Get-Service - Spooler -RequiredServices

Následující příkaz zobrazí služby závislé na službě zařazování:

Služba Get-Service - Spooler -DependentServices

Pokud potřebujete najít služby s konkrétním stavem nebo nastavením, použijte rutinu Kde-objekt. Například získáme seznam spuštěných služeb se stavem Běh:

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

Chcete-li zobrazit služby se spouštěcím typem Manual, spusťte příkaz

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

Zkontrolujte, zda má systém specifikovanou službu:

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

Hostitel zápisu "ServiceTest existuje"

Zastavte, spusťte, pozastavte a restartujte služby z prostředí PowerShell

Službu můžete zastavit pomocí rutiny cmdlet Zastavte službu. Chcete-li zastavit tiskovou službu, spusťte příkaz:

Zastavení služby - zařazování jmen

Rutina Stop-Service po provedení nezobrazuje žádná data. Chcete-li zobrazit výsledek příkazu, použijte parametr -PassThru.

Upozorňujeme, že ne všechny služby lze zastavit. Pokud existují závislé služby, pak se zobrazí chyba

Nelze zastavit službu, protože má závislé služby. Lze jej zastavit, pouze pokud je nastaven příznak síly.

Chcete-li vynutit zastavení, použijte parametr -Síla. Musíte si uvědomit, že všechny závislé služby se také zastaví:

Stop-Service samss -Force -Passthru

Následující příkaz zastaví uvedené služby (bity, zařazovací službu) se stavem „Running“:

bitky pro servis, zařazovací služba | kde $ _. status -eq 'running' | | stop-service -passthru

Někdy služby zamrznou ve stavu Zastavení a jejich procesy musí být násilně ukončeny.

Cmdlet Start-service zahájí zastavené služby:

Start-Service - zařazovací služba -PassThru

Služba se nespustí, pokud existují služby závislé na zastavení. Chcete-li je najít a povolit:

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

Cmdlet Pozastavte službu může pozastavit služby, které umožňují dočasné pozastavení a obnovení. Pomocí rutiny cmdlet získáte informace o schopnosti dočasně pozastavit určitou službu. Získejte servis s majetkem "CanPauseAndContinue".

Get-Service samss | Název formátu-seznamu, canpauseaconconueue

Chcete-li zobrazit seznam všech služeb, které mohou být pozastaveny, zadejte příkaz:

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

Pozastavení služby SQLBrowser:

Služba pozastavení - název SQLBrowser

Chcete-li obnovit pozastavenou službu, použijte rutinu cmdlet Obnovit službu:

Resume-Service - název SQLBrowser

Následující příkaz obnoví všechny pozastavené služby:

get-service | where-object $ _. Status -eq "Paused" | životopis

Cmdlet Restartujte službu restartuje službu:

Restartujte službu - zařazování jmen

Tento příkaz spustí všechny zastavené síťové služby počítače:

get-service net * | where-object $ _. Status -eq "Stopped" | restart-služba

Parametr -Název_počítače tyto rutiny cmdlet chybí, ale mohou být spuštěny na vzdáleném počítači pomocí rutiny cmdlet Vyvolejte příkaz nebo potrubím:

Chcete-li například restartovat tiskovou frontu na vzdáleném počítači RM1, spusťte příkaz:
Get-Service Spooler -ComputerName RM1 | Start-service

Ve výchozím nastavení mohou ve Windows spustit a zastavit služby pouze správci, ale běžným uživatelům můžete udělit oprávnění k restartování určité služby.

Set-Service - změna nastavení služby Windows

Cmdlet Set-service umožňuje změnit nastavení nebo nastavení služeb v místním nebo vzdáleném počítači. Protože stav služby je vlastnost, lze tuto rutinu použít ke spuštění, zastavení a pozastavení služby. Cmdlet Set-service má parametr -Startuptype, což vám umožní změnit typ spuštění služby.

Změňte typ spouštění zařazovací služby na automatický:

Set-Service zařazovací služba -startuptype automatic -passthru

Službu můžete přenést na ruční spuštění:

Set-Service zařazovací služba -startuptype manual -passthru

Vytváření a odebírání služeb Windows pomocí PowerShell

Nová služba - cmdlet k vytvoření nové služby ve Windows. Pro novou službu musíte zadat název a spustitelný soubor (skript PowerShell můžete spustit jako službu Windows).

V příkladu vytvořte novou službu s názvem TestService.

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

Pomocí parametru Get-WmiObject získáme informace o spouštěcím režimu a popisu služby

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

Pomocí příkazu můžete změnit parametry nové služby

Set-Service - název TestService - Popis „Moje služba“ - Manuál StartupType

Chcete-li službu odebrat, použijte příkaz

(Get-WmiObject win32_service -Filter "name = 'TestService'"). Odstranit ()

Chcete-li službu spustit, změňte účet

Můžete změnit účet, pod kterým služba začíná. Získejte název účtu, který se používá ke spuštění TestService

get-wmiobject win32_service -filter "name = 'TestService'" | | Vyberte jméno, jméno

Chcete-li změnit název účtu a heslo, spusťte příkazy.

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

Výsledkem je seznam parametrů metody Change (). Zvažujeme, kde jsou umístěny parametry StartName a StartPassword - 20 a 21 míst.

$ svc | Invoke-WmiMethod - změna jména -ArgumentList @ ($ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, $ null, „Administrator“, „P @ ssw0rd“)

Nebo můžete zadat název účtu gMSA. Heslo není zadáno.

Jak vidíte, PowerShell usnadňuje správu služeb Windows. Můžete vytvořit, zastavit, spustit a obnovit služby, změnit jejich vlastnosti. Většina rutin vám umožňuje spravovat služby na vzdálených počítačích..