Zarządzanie usługami Windows za pomocą PowerShell

W systemie Windows można zarządzać usługami nie tylko z poziomu konsoli graficznej services.msc lub narzędzia wiersza polecenia Sc.exe (pierwotnie zawartego w zestawie zasobów), ale także za pomocą programu PowerShell. W tym artykule przyjrzymy się różnym scenariuszom zarządzania usługami Windows za pomocą PowerShell..

Treść

  • Podstawowe polecenia cmdlet programu PowerShell do zarządzania usługami systemu Windows
  • Zatrzymaj, uruchom, wstrzymaj i uruchom ponownie usługi z PowerShell
  • Set-Service - zmiana ustawień usługi Windows
  • Tworzenie i usuwanie usług systemu Windows za pomocą programu PowerShell
  • Zmień konto, aby uruchomić usługę

Podstawowe polecenia cmdlet programu PowerShell do zarządzania usługami systemu Windows

Istnieje osiem podstawowych poleceń cmdlet Service zaprojektowanych do wyświetlania statusu i zarządzania usługami Windows.

Aby uzyskać całą listę poleceń cmdlet Service, wprowadź polecenie:

Get-Help \ * - Usługa

  • Uzyskaj usługę - umożliwia uzyskanie usług na komputerze lokalnym lub zdalnym, zarówno uruchomionych, jak i zatrzymanych;
  • Nowa usługa - stworzyć usługę. Tworzy nowy wpis dla usługi Windows w bazie danych rejestru i usług;
  • Uruchom ponownie usługę - uruchom ponownie usługę. Wysyła komunikat o ponownym uruchomieniu usługi za pośrednictwem kontrolera usług systemu Windows
  • Wznów usługę - wznowić usługę. Wysyła wiadomość wznowienia do Menedżera usług systemu Windows;
  • Zestaw serwisowy - Zmień ustawienia usług lokalnych lub zdalnych, w tym stan, opis, nazwę wyświetlaną i tryb uruchamiania. Tego polecenia cmdlet można także użyć do uruchomienia, zatrzymania lub wstrzymania usługi;
  • Uruchom usługę - uruchomić usługę;
  • Zatrzymaj usługę - zatrzymać usługę (wysyła komunikat zatrzymania do Menedżera usług systemu Windows);
  • Zawieś usługę wstrzymaj usługę. Zawieszona usługa jest nadal uruchomiona, ale przestaje działać do momentu wznowienia usługi, na przykład za pomocą polecenia cmdlet Resume-Service.

Aby uzyskać szczegółowy opis i przykłady użycia określonego polecenia cmdlet, skorzystaj z pomocy Get:

Uzyskaj pomoc Start-Service

Get-Service: uzyskaj listę usług i ich status

Za pomocą polecenia cmdlet można pobrać listę i status (Uruchomiony / Zatrzymany) usługi na komputerze lokalnym lub zdalnym. Uzyskaj usługę. Opcja -Name umożliwia wybór według nazwy usługi. Nazwę usługi można określić za pomocą znaku wieloznacznego *.

Jeśli nie znasz dokładnej nazwy usługi, możesz znaleźć usługi według nazwy wyświetlanej za pomocą parametru -Nazwa wyświetlana. Możesz użyć listy wartości i symboli wieloznacznych.

.

Cmdlet Uzyskaj usługę można użyć do uzyskania statusu usług na komputerach zdalnych poprzez określenie parametru -Nazwa komputera. Możesz natychmiast sprawdzić status usługi na wielu komputerach zdalnych; ich nazwy muszą być oznaczone przecinkiem. Na przykład następujące polecenie pobiera status usługi buforowania na komputerach zdalnych RM1 i RM2.

Spooler Get-Service - nazwa_komputera RM1, RM2

Status Nazwa DisplayName ------ ---- ----------- Uruchomiony bufor Bufor wydruku Bufor zatrzymany Bufor wydruku

Aby wyświetlić wszystkie właściwości usługi, polecenie cmdlet Select-Object pozwoli:

Spooler Get-Service | Wybierz obiekt *

Cmdlet Wybierz obiekt wyświetli niektóre właściwości usługi. Na przykład musimy wyświetlić nazwę, status i dostępne funkcje usługi buforowania:

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

Cmdlet Uzyskaj usługę ma dwa parametry, które pozwalają uzyskać zależności usługi:

  • Parametr -DependentServices umożliwia wyświetlanie usług zależnych od tej usługi;
  • Parametr -RequiredServices pozwala wyświetlić usługi, od których zależy ta usługa.

Następujące polecenie wyświetla usługi potrzebne do uruchomienia usługi buforowania:

Get-Service -Name Spooler -RequiredServices

Następujące polecenie wyświetla usługi zależne od usługi buforowania:

Get-Service -Name Spooler -DependentServices

Jeśli chcesz znaleźć usługi o określonym stanie lub ustawieniach, użyj polecenia cmdlet Gdzie obiekt. Na przykład otrzymujemy listę uruchomionych usług ze statusem Uruchomienie:

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

Aby wyświetlić usługi z typem uruchamiania Ręcznie, uruchom polecenie

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

Sprawdź, czy system ma określoną usługę:

if (Get-Service „ServiceTest” -ErrorAction SilentlyContinue)

Host zapisu „ServiceTest istnieje”

Zatrzymaj, uruchom, wstrzymaj i uruchom ponownie usługi z PowerShell

Możesz zatrzymać usługę za pomocą polecenia cmdlet Zatrzymaj usługę. Aby zatrzymać usługę drukowania, uruchom polecenie:

Bufor Stop-Service -Name

Polecenie cmdlet Stop-Service nie wyświetla żadnych danych po wykonaniu. Aby zobaczyć wynik polecenia, użyj parametru -PassThru.

Pamiętaj, że nie wszystkie usługi można zatrzymać. Jeśli istnieją usługi zależne, uzyskaj błąd

Nie można zatrzymać usługi, ponieważ ma ona usługi zależne. Można go zatrzymać tylko wtedy, gdy ustawiona jest flaga wymuszenia.

Aby wymusić zatrzymanie, użyj parametru -Siła. Musisz pamiętać, że wszystkie usługi zależne również przestaną:

Stop-Service samss -Force -Passthru

Następujące polecenie zatrzyma wymienione usługi (bity, bufor) o statusie „Uruchomiony”:

bity serwisowe, bufor | gdzie $ _. status -eq „running” | stop-service -passthru

Czasami usługi zawieszają się w stanie Zatrzymanie, a ich procesy muszą zostać przymusowo zakończone.

Cmdlet Uruchom usługę uruchamia zatrzymane usługi:

Start-Service -Nazwa buforowania -PassThru

Usługa nie uruchomi się, jeśli zostaną zatrzymane usługi zależne. Aby je znaleźć i włączyć:

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

Cmdlet Zawieś usługę może zawiesić usługi umożliwiające tymczasowe zawieszenie i wznowienie. Użyj polecenia cmdlet, aby uzyskać informacje o możliwości tymczasowego zawieszenia określonej usługi Uzyskaj usługę z własnością ”CanPauseAndContinue„.

Get-Service samss | Nazwa listy formatów, można wstrzymać i kontynuować

Aby wyświetlić listę wszystkich usług, które mogą zostać wstrzymane, wprowadź polecenie:

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

Zawieś usługę SQLBrowser:

Suspend-Service -Name SQLBrowser

Aby wznowić zawieszoną usługę, użyj polecenia cmdlet Wznów usługę:

Resume-Service -Name SQLBrowser

Następujące polecenie wznawia wszystkie wstrzymane usługi:

uzyskać usługę | gdzie-obiekt $ _. Status -eq „Wstrzymany” | usługa resume

Cmdlet Uruchom ponownie usługę ponownie uruchamia usługę:

Restart-Service -Nazwa bufor

To polecenie uruchamia wszystkie zatrzymane usługi sieciowe komputera:

get-service net * | gdzie-obiekt $ _. Status -eq "Zatrzymany" | usługa restartu

Parametr -Nazwa komputera tych poleceń cmdlet brakuje, ale można je uruchomić na komputerze zdalnym za pomocą polecenia cmdlet Wywołaj polecenie lub za pomocą rury:

Na przykład, aby ponownie uruchomić kolejkę wydruku na komputerze zdalnym RM1, uruchom polecenie:
Get-Service Spooler -ComputerName RM1 | Uruchom usługę

Domyślnie tylko administratorzy mogą uruchamiać / zatrzymywać usługi w systemie Windows, ale można przyznać uprawnienia do ponownego uruchomienia określonej usługi zwykłym użytkownikom.

Set-Service - zmiana ustawień usługi Windows

Cmdlet Zestaw serwisowy umożliwia zmianę ustawień lub ustawień usług na komputerze lokalnym lub zdalnym. Ponieważ status usługi jest właściwością, tego polecenia cmdlet można używać do uruchamiania, zatrzymywania i wstrzymywania usługi. Cmdlet Zestaw serwisowy ma parametr -Typ startowy, umożliwiając zmianę rodzaju uruchomienia usługi.

Zmień typ uruchamiania usługi buforowania na automatyczny:

Zestaw buforowania usług -startuptype automatic -passthru

Możesz przenieść usługę na ręczne uruchamianie:

Zestaw bufor usługi -startuptype manual -passthru

Tworzenie i usuwanie usług systemu Windows za pomocą programu PowerShell

Nowa usługa - polecenia cmdlet, aby utworzyć nową usługę w systemie Windows. W przypadku nowej usługi musisz podać nazwę i plik wykonywalny (możesz uruchomić skrypt PowerShell jako usługę Windows).

W tym przykładzie utwórz nową usługę o nazwie TestService.

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

Za pomocą parametru Get-WmiObject uzyskujemy informacje o trybie uruchamiania i opisie usługi

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

Możesz zmienić parametry nowej usługi za pomocą polecenia

Set-Service -Nazwa TestService -Opis „My Service” -StartupType Manual

Aby usunąć usługę, użyj polecenia

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

Zmień konto, aby uruchomić usługę

Możesz zmienić konto, na którym usługa się uruchamia. Uzyskaj nazwę konta używanego do uruchomienia usługi TestService

get-wmiobject win32_service -filter "name = 'TestService'" | Wybierz nazwę, nazwę początkową

Aby zmienić nazwę konta i hasło, wykonaj polecenia.

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

W rezultacie otrzymujemy listę parametrów metody Change (). Rozważamy, gdzie znajdują się parametry StartName i StartPassword - odpowiednio 20 i 21 miejsc.

$ 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”)

Lub możesz podać nazwę konta gMSA. Hasło nie jest określone.

Jak widać, PowerShell ułatwia zarządzanie usługami Windows. Możesz tworzyć, zatrzymywać, uruchamiać i wznawiać usługi, zmieniać ich właściwości. Większość poleceń cmdlet umożliwia zarządzanie usługami na komputerach zdalnych..