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
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
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..