Rozdział 1 — Wprowadzenie do programu PowerShell

Często zdarza się, że prezenterzy na konferencjach i spotkaniach grup użytkowników mają już uruchomiony program PowerShell podczas rozpoczynania prezentacji na poziomie podstawowym. Ta książka zaczyna się od odpowiadania na pytania, które słyszałem uczestników, którzy wcześniej nie używali programu PowerShell zadają w tych sesjach.

W szczególności ten rozdział koncentruje się na znajdowaniu i uruchamianiu programu PowerShell oraz rozwiązywaniu niektórych początkowych punktów bólu, które nowi użytkownicy doświadczają w programie PowerShell. Pamiętaj, aby postępować zgodnie z instrukcjami i zapoznać się z przykładami przedstawionymi w tym rozdziale na komputerze środowiska laboratoryjnego systemu Windows 10.

Co należy zrobić, aby rozpocząć pracę z programem PowerShell?

Wszystkie nowoczesne wersje systemów operacyjnych Windows są dostarczane z zainstalowanym programem PowerShell. Jeśli używasz wersji starszej niż 5.1, zainstaluj najnowszą wersję.

Gdzie mogę znaleźć program PowerShell?

Najprostszym sposobem znalezienia programu PowerShell w systemie Windows 10 jest wpisanie programu PowerShell na pasku wyszukiwania, jak pokazano na rysunku 1–1.

Rysunek 1–1 — wyszukiwanie programu PowerShell w menu Start

Zwróć uwagę, że cztery różne skróty dla programu PowerShell są wyświetlane na rysunku 1–1. Komputer używany do celów demonstracyjnych w tej książce korzysta z 64-bitowej wersji systemu Windows 10, więc istnieje 64-bitowa wersja konsoli programu PowerShell i środowiska PowerShell ISE (zintegrowane środowisko skryptowe) oraz 32-bitowa wersja każdego z nich, co oznacza sufiks (x86) na skrótach. Jeśli korzystasz z 32-bitowej wersji systemu Windows 10, będziesz mieć tylko dwa skróty. Te elementy nie mają sufiksu (x86), ale są wersjami 32-bitowymi. Jeśli masz 64-bitowy system operacyjny, moim zaleceniem jest uruchomienie 64-bitowej wersji programu PowerShell, chyba że masz konkretną przyczynę uruchamiania wersji 32-bitowej.

Aby uzyskać informacje na temat uruchamiania programu PowerShell w innych wersjach systemu Windows, zobacz Uruchamianie programu Windows PowerShell.

Jak mogę uruchomić program PowerShell?

W środowiskach produkcyjnych przedsiębiorstwa, które obsługujem, używam trzech różnych kont użytkowników usługi Active Directory. Dublowałem te konta w środowisku laboratoryjnym używanym w tej książce. Zaloguję się na komputerze z systemem Windows 10 jako użytkownik domeny, który nie jest domeną lub administratorem lokalnym.

Konsola programu PowerShell została uruchomiona, klikając skrót "Windows PowerShell", jak pokazano na rysunku 1–1.

Rysunek 1–4 — pasek tytułu okna programu PowerShell

Zwróć uwagę, że na pasku tytułu konsoli programu PowerShell jest wyświetlany komunikat "Windows PowerShell", jak pokazano na rysunku 1–4. Niektóre polecenia działają prawidłowo, ale program PowerShell nie może uczestniczyć w kontroli dostępu użytkowników (UAC). Oznacza to, że nie można wyświetlić monitu o podniesienie uprawnień dla zadań, które wymagają zatwierdzenia przez administratora. Zostanie wygenerowany następujący komunikat o błędzie:

Get-Service -Name W32Time | Stop-Service
Stop-Service : Service 'Windows Time (W32Time)' cannot be stopped due to the following
error: Cannot open W32Time service on computer '.'.
At line:1 char:29
+ Get-Service -Name W32Time | Stop-Service
+
    + CategoryInfo          : CloseError: (System.ServiceProcess.ServiceController:ServiceController)
     [Stop-Service], ServiceCommandException
    + FullyQualifiedErrorId : CouldNotStopService,Microsoft.PowerShell.Commands.StopServiceCommand

Rozwiązaniem tego problemu jest uruchomienie programu PowerShell jako użytkownik domeny, który jest administratorem lokalnym. W ten sposób skonfigurowano moje drugie konto użytkownika domeny. Korzystając z zasady najniższych uprawnień, to konto nie powinno być administratorem domeny lub ma podniesione uprawnienia w domenie.

Zamknij program PowerShell. Uruchom ponownie konsolę programu PowerShell, z wyjątkiem tego czasu kliknij prawym przyciskiem myszy skrót programu Windows PowerShell i wybierz polecenie Uruchom jako administrator, jak pokazano na rysunku 1–5.

Rysunek 1–5 — menu kontekstowe — Uruchom jako administrator

Jeśli logujesz się do systemu Windows jako zwykły użytkownik, zostanie wyświetlony monit o podanie poświadczeń. Wprowadźę poświadczenia dla konta użytkownika, który jest użytkownikiem domeny i administratorem lokalnym, jak pokazano na rysunku 1–6.

Rysunek 1–6

Po ponownym uruchomieniu programu PowerShell jako administrator na pasku tytułu powinien zostać wyświetlony komunikat "Administracja istrator: Windows PowerShell", jak pokazano na rysunku 1–7.

Rysunek 1–7

Teraz, gdy program PowerShell jest uruchamiany z podwyższonym poziomem uprawnień jako administrator lokalny, kontrola konta użytkownika nie będzie już problemem, gdy polecenie jest uruchamiane na komputerze lokalnym, który zwykle wymaga monitu o podniesienie uprawnień. Należy jednak pamiętać, że każde polecenie jest uruchamiane z tego wystąpienia z podwyższonym poziomem uprawnień konsoli programu PowerShell, jest również uruchamiane z podwyższonym poziomem uprawnień.

Aby uprościć znajdowanie programu PowerShell i uruchamianie go jako administrator, zalecam przypięcie go do paska zadań i ustawienie go do automatycznego uruchamiania jako administrator przy każdym uruchomieniu.

Ponownie wyszukaj program PowerShell, z wyjątkiem tego czasu kliknij go prawym przyciskiem myszy i wybierz pozycję "Przypnij do paska zadań", jak pokazano na rysunku 1–8.

Rysunek 1–8

Kliknij prawym przyciskiem myszy skrót programu PowerShell przypięty do paska zadań i wybierz właściwości, jak pokazano na rysunku 1–9.

Rysunek 1–9 — Kontrola konta użytkownika — wprowadzanie poświadczeń

Kliknij pole wyboru "Zaawansowane" oznaczone przez #1 na rysunku 1–10, a następnie zaznacz pole wyboru "Uruchom jako administrator", co oznacza #2 na rysunku 1–10, a następnie kliknij przycisk OK dwa razy, aby zaakceptować zmiany i zamknąć oba okna dialogowe.

Rysunek 1–10 — pasek tytułu przedstawiający

Nigdy nie musisz martwić się o znalezienie programu PowerShell lub o to, czy jest on uruchomiony ponownie jako administrator.

Uruchamianie programu PowerShell z podwyższonym poziomem uprawnień jako administrator, aby zapobiec występowaniu problemów z kontrolą konta użytkownika tylko w przypadku poleceń uruchamianych na komputerze lokalnym. Nie ma to wpływu na polecenia przeznaczone dla komputerów zdalnych.

Jaka wersja programu PowerShell jest uruchomiona?

W programie PowerShell istnieje wiele zmiennych automatycznych, które przechowują informacje o stanie. Jedną z tych zmiennych jest $PSVersionTable, która zawiera tabelę skrótów, która może służyć do wyświetlania odpowiednich informacji o wersji programu PowerShell:

$PSVersionTable
Name                           Value
----                           -----
PSVersion                      5.1.19041.1
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.19041.1
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Nowsze wersje programu Windows PowerShell są dystrybuowane w ramach programu Windows Management Framework (WMF). Określona wersja programu .NET Framework jest wymagana w zależności od wersji programu WMF. Aby przeprowadzić uaktualnienie do programu Windows PowerShell 5.1, zobacz Uaktualnianie istniejącego programu Windows PowerShell.

Zasady wykonywania

W przeciwieństwie do popularnego przekonania, zasady wykonywania w programie PowerShell nie są granicą zabezpieczeń. Zaprojektowano go tak, aby uniemożliwić użytkownikowi nieświadome uruchomienie skryptu. Określony użytkownik może łatwo pominąć zasady wykonywania w programie PowerShell. Tabela 1–2 zawiera domyślne zasady wykonywania dla bieżących systemów operacyjnych Windows.

Wersja systemu operacyjnego Windows Domyślne zasady wykonywania
Server 2019 Podpisane zdalnie
Server 2016 Podpisane zdalnie
Windows 10 Podlega ograniczeniom

Niezależnie od ustawienia zasad wykonywania dowolne polecenie programu PowerShell można uruchamiać interaktywnie. Zasady wykonywania mają wpływ tylko na polecenia uruchomione w skrycie. Polecenie Get-ExecutionPolicy cmdlet służy do określania bieżącego ustawienia zasad wykonywania, a Set-ExecutionPolicy polecenie cmdlet służy do zmiany zasad wykonywania. Moim zaleceniem jest użycie zasad RemoteSigned , które wymagają podpisania skryptów pobranych przez zaufanego wydawcę w celu uruchomienia.

Sprawdź bieżące zasady wykonywania:

Get-ExecutionPolicy
Restricted

Skrypty programu PowerShell nie mogą być uruchamiane w ogóle, gdy zasady wykonywania są ustawione na wartość Ograniczone. Jest to ustawienie domyślne we wszystkich systemach operacyjnych klienta systemu Windows. Aby zademonstrować problem, zapisz następujący kod jako .ps1 plik o nazwie Stop-TimeService.ps1.

Napiwek

Skrypt programu PowerShell to plik w postaci zwykłego .ps1 tekstu z rozszerzeniem zawierającym polecenia, które chcesz uruchomić. Aby utworzyć skrypt programu PowerShell, użyj edytora kodu, takiego jak Visual Studio Code (VS Code) lub dowolnego edytora tekstów, takiego jak Notatnik.

Get-Service -Name W32Time | Stop-Service -PassThru

To polecenie jest uruchamiane interaktywnie bez błędu, o ile program PowerShell jest uruchamiany z podwyższonym poziomem uprawnień jako administrator. Ale gdy tylko zostanie zapisany jako plik skryptu i spróbujesz wykonać skrypt, generuje błąd:

.\Stop-TimeService.ps1
.\Stop-TimeService.ps1 : File C:\demo\Stop-TimeService.ps1 cannot be loaded because
running scripts is disabled on this system. For more information, see
about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Stop-TimeService.ps1
+
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

Zwróć uwagę, że błąd pokazany w poprzednim zestawie wyników informuje o tym, jaki jest problem (uruchamianie skryptów jest wyłączone w tym systemie). Po uruchomieniu polecenia w programie PowerShell, które generuje komunikat o błędzie, pamiętaj, aby odczytać komunikat o błędzie zamiast ponownie uruchamiać polecenie i mieć nadzieję, że zostanie uruchomiony pomyślnie.

Zmień zasady wykonywania programu PowerShell na podpisane zdalnie.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution
policy might expose you to the security risks described in the about_Execution_Policies help topic
at http://go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"):y

Pamiętaj, aby przeczytać ostrzeżenie wyświetlane podczas zmieniania zasad wykonywania. Zalecam również zapoznanie się z tematem pomocy about_Execution_Policies , aby upewnić się, że rozumiesz wpływ na bezpieczeństwo zmian zasad wykonywania.

Teraz, gdy zasady wykonywania zostały ustawione na RemoteSigned, Stop-TimeService.ps1 skrypt uruchamia błąd wolny.

.\Stop-TimeService.ps1
Status   Name               DisplayName
------   ----               -----------
Stopped  W32Time            Windows Time

Pamiętaj, aby uruchomić usługę Czas systemu Windows przed kontynuowaniem w przeciwnym razie mogą wystąpić nieprzewidziane problemy.

Start-Service -Name w32time

Podsumowanie

W tym rozdziale przedstawiono sposób znajdowania i uruchamiania programu PowerShell oraz tworzenia skrótu uruchamianego przez program PowerShell jako administrator. Przedstawiono również domyślne zasady wykonywania i sposób ich zmiany.

Wykonaj przegląd

  1. Jak określić, jaka wersja programu PowerShell jest uruchomiona?
  2. Dlaczego ważne jest uruchomienie programu PowerShell z podwyższonym poziomem uprawnień jako administrator?
  3. Jak określić bieżące zasady wykonywania programu PowerShell?
  4. Jakie są domyślne zasady wykonywania programu PowerShell na komputerach klienckich z systemem Windows?
  5. Jak zmienić zasady wykonywania programu PowerShell?

Dla tych, którzy chcą dowiedzieć się więcej o tematach omówionych w tym rozdziale, zalecam przeczytanie następujących tematów pomocy programu PowerShell.

W następnym rozdziale dowiesz się więcej o możliwości odnajdywania poleceń w programie PowerShell. Jedną z rzeczy, które zostaną omówione, jest aktualizowanie programu PowerShell, dzięki czemu tematy pomocy można wyświetlać bezpośrednio z poziomu programu PowerShell zamiast wyświetlania ich w Internecie.