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