BETA
Aby się zalogować, najpiew wybierz portal.
Aby się zarejestrować, najpiew wybierz portal.
Podaj słowa kluczowe
Słowa kluczowe muszą mieć co najmniej 3 sąsiadujące znaki alfanumeryczne
Pole zawiera niedozwolone znaki

Baza wiedzy











Kurs programowania w PowerShell cz.7

06-12-2011 06:00 | Grzegorz Gałęzowski
Artykuł jest kontynuacją kursu programowania w języku skryptowym PowerShell autorstwa Grzegorza Gałęzowskiego i ma na celu zapoznanie czytelnika z podstawami poruszania się w powłoce oraz poleceniami wbudowanymi w PowerShell. W artykule przedstawiono wiele praktycznych przykładów wykorzystania cmdletów, zaprezentowano ich składnię, czy też opcje uzyskania pomocy.

Zarządzanie usługami i procesami w systemie MS Windows z wykorzystaniem PowerShell – część 1.

Ten artykuł jest pierwszą z dwóch części w którym zostanie podjęta analiza cmdletów umożliwiających zarządzanie usługami i procesami w systemie MS Windows.

Czym są usługi systemu MS Windows?

Usługa Windows – to inaczej proces wykonywany wewnątrz systemu Windows, przeznaczony do specjalnych funkcji i niewymagający interakcji z użytkownikiem systemu. Proces taki nazywany jest też serwisem Windows. Usługa zwykle jest uruchamiana podczas startu czyli ładowania systemu operacyjnego i działa tak długo, jak długo system jest czynny lub zostanie wyłączona przez użytkownika. Zasada działania jest podobna do idei daemona w systemie Unix.

Usługi mogą być zarządzane przez narzędzie Services.msc lub z poziomu: Panel sterowania\System i zabezpieczenia\Narzędzia administracyjne\Usługi.

Okno programu Usługi zaprezentowane zostało na rysunku 1.

Rysunek 1 Okno programu Usługi.

Jak widać na rysunku 1, okno do zarządzania usługami zawiera krótki opis każdej z nich, wyświetla ścieżkę do pliku wykonywalnego usługi, aktualny status usługi, jej typ uruchomienia, zależności i konto na którym dana usługa jest uruchomiona.

Możliwe jest tutaj wykonanie następujących czynności:

1. Uruchom (uruchomienie usługi), Zatrzymaj (wyłącznie usługi), Wstrzymaj (wstrzymanie usługi), lub  Wznów (czyli wznowienie działania usługi po uprzednim jej wstrzymaniu);

2. Określenie parametrów usługi;

3. Zmiana metody uruchamiania, możemy tutaj wybrać następujące pozycje:

-Automatyczny: Startuje usługę podczas uruchamiania systemu.

-Ręczny: Usługa uruchamiana jest ręcznie, lub gdy zostanie wywołana przez aplikację.

-Wyłączony: Całkowite wyłączenie usługi.

-Automatyczny (opóźnione uruchomienie): Nowy typ uruchomienia, który pojawił się w Windows Vista, system czeka aż zakończy się proces ładowania systemu i zostaną zakończone inne operacje.

4. Zmiana konta, pod którym usługa jest uruchamiana.

5. Konfiguracja opcji odzyskiwania po awarii usługi.

6. Możliwość wyeksportowania listy usług do pliku tekstowego lub pliku CSV.

Aby zobaczyć które elementy są uruchomione lub zatrzymane, można również skorzystać z  narzędzia msconfig.exe (Start/Uruchom, w oknie Urchom wpisujemy msconfig.exe). Jednak znajdziemy tam dużo mniejszą liczbę opcji (rysunek 2).

 

Rysunek 2 Konfiguracja systemu.

PowerShell i  usługi systemu Windows.

Windows PowerShell zawiera listę cmdletów, które można wykorzystać do tworzenia, zarządzania i usuwania z systemu różnych usług.

Aby znaleźć wszystkie cmdlety które są związane z usługami Windows, należy wykonać następujące polecenie (patrz rysunek 3):

Get-Command -CommandType cmdlet *service*

 

Rysunek 3

Poniższe cmdlety są związane z dostępem do usług w systemie:

-Get-Service

-New-Service

-Restart-Service

-Resume-Service

-Set-Service

-Start-Service

-Stop-Service

-Suspend-Service

Poniżej opisano niektóre z najczęściej używanych i przydatnych cmdletów związanych z obsługą usług.

Get-Service

Get-Service - wyświetla wszystkie usługi dostępne na komputerze lokalnym lub zdalnym. Można  w ten sposób znaleźć wszystkie uruchomione usługi. Istnieje także możliwość wyświetlenia usług według ich nazwy. Na przykład interesują nas usługi, których nazwa zaczyna się od „SQL” i są dodatkowo jeszcze uruchomione. Aby tego dokonać wystarczy wykonać następujące polecenie (patrz rysunek 4).

Get-Service -DisplayName "*SQL*" -Computername Mobile7 | Where-Object

{$_.status -eq "Running"}

Jak widać na rysunku 4, wszystkie usługi, których nazwa zawiera frazę „SQL” i są uruchomione na komputerze Mobile7 zostały wyświetlone:

Rysunek 4

Jeśli chcemy zobaczyć wszystkie usługi, których nazwa zawiera frazę „SQL”, ale przy okazji chcemy wykluczyć usługę, która ma nazwie słowo „Writer”, można użyć parametru -Exclude, tak jak w poniższym przykładzie (patrz rysunek 5):

Get-Service -Include "*SQL*" -Exclude "*Writer*" -ComputerName Mobile7 |

Where-Object {$_.status -eq "Running"}

 

Rysunek 5

Teraz lista wszystkich właściwości/metod obiektów zwracanych przez polecenie Get-Service. Wykonaj następujące polecenia (patrz rysunek 6):    

Get-Service | Get-Member -MemberType properties

 

Rysunek 6

Teraz lista wszystkich metod związanych z  Get-Service, (patrz rysunek 7):

Get-Service | Get-Member -MemberType methods

Rysunek 7

Usługi można uruchamiać i zatrzymywać przy użyciu przy użyciu Get-Service. Aby sprawdzić status danej usługi można wykonać następujące polecenie (patrz rysunek 8):

(Get-Service -Name "SQLWriter").status

 

Rysunek 8

Zatrzymywanie usługi.

Zamiast korzystać z metody Get-Service, aby zatrzymać usługę, można użyć apletu polecenia Stop-Service.

Poniższy przykład pokazuje ja sprawdzić stan usługi, następnie jak ją zatrzymać, aby na końcu sprawdzić czy usługa rzeczywiście została wyłączona, czyli ponownie sprawdzamy jej stan (patrz rysunek 9).

Get-Service -Name SQLWriter

Stop-Service -Name SQLWriter

Get-Service -Name SQLWriter

 

Rysunek 9

Załóżmy teraz, że chcemy zatrzymać wszystkie usługi SQL Server uruchomione na komputerze lokalnym. Możemy użyć dwóch cmdletów Get-Service i Stop-Service. Poniższy przykład doprowadzi do zatrzymania wszystkich uruchomionych usług związanych z SQL. Oczywiście taka metoda byłaby katastrofą na maszynie produkcyjnej, dlatego też można użyć parametru WhatIf z przełącznikiem Stop-Service (patrz rysunek 10):

Get-Service -DisplayName *sql* | Where-Object {$_.Status -eq "Running"} | Stop-

Service –WhatIf

 

Rysunek 10

Wszystkie usługi można zatrzymać jedną po drugiej z potwierdzeniem za pomocą parametru-Confirm. Pozwala to użytkownikom na samodzielny wybór (patrz rysunek 11).

Get-Service -Displayname *sql* | Where-Object {$_.Status -eq "Running"}| Stop-

Service –confirm

 

Rysunek 11

Można również skorzystać z cmdletu Stop-Service z wprowadzonym bezpośrednio paremetrem –Confirm, tak jak na poniższym przykładzie (patrz rysunek 12):

Stop-Service -Displayname *sql* -Confirm

 

Rysunek 12

Uruchamianie usługi

Aby uruchomić usługę można wykorzystać aplet Start-Service.

Poniższy przykład demonstruje w jaki sposób można  uruchomić usługę SQL Writer (patrz rysunek 13):

Start-Service -Name SQLWriter

Get-Service -Name SQLWriter

 

Rysunek 13

Teraz aby znaleźć wszystkie usługi powiązane z SQL, które nie są uruchomione (patrz rysunek 14), musimy wykonać następujące polecenie:

Get-Service -DisplayName *sql* | Where-Object {$_.Status -eq "Stopped"}

 

Rysunek 14

W Start-Service można także wykorzystać parametr –WhatIf (patrz rysunek 15):

Get-Service -DisplayName *sql* | Where-Object {$_.Status -eq "Stopped"} |

Start-Service –WhatIf

 

Rysunek 15

Tak jak to było z funkcją Stop-Service, można spróbować uruchomić wszystkie usługi powiązane z SQL, które są zatrzymane. Dodany został jeszcze parametr –Confirm, by użytkownik mógł samodzielnie dokonać wyboru, które usługi mają być uruchomione (patrz rysunek 16):

Get-Service -DisplayName *sql* | Where-Object {$_.Status -eq "Stopped"} |

Start-Service –confirm

 

Rysunek 16

Podsumowanie

W tym odcinku to już wszystko. Dowiedzieliśmy się czym są usługi i jak nimi zarządzać na podstawowym poziomie z użyciem PowerShell.

W następnym odcinku poznamy metody umożliwiające przełączanie trybu uruchamiania usług systemowych za pomocą Set-Service. Poznamy także aplet Get-Process, który umożliwia uzyskiwanie informacji na temat procesów i zarządzania nimi w systemie operacyjnym.

Inne zasoby

Kurs programowania w PowerShell cz.6

Kurs programowania w PowerShell cz.5 

Kurs programowania w PowerShell cz.4

Kurs programowania w PowerShell cz.3

Kurs programowania w PowerShell cz.2

Kurs programowania w PowerShell

Komentarze 0

pkt.

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.