Udostępnij za pośrednictwem


Rozdział 1 — wprowadzenie do programu PowerShell

W tym rozdziale skupiono się na znajdowaniu i uruchamianiu programu PowerShell oraz rozwiązywaniu początkowych punktów bólu, które nowi użytkownicy korzystają z programu PowerShell. Postępuj zgodnie z instrukcjami i zapoznaj się z przykładami w tym rozdziale na komputerze środowiska laboratoryjnego.

Co to jest program PowerShell?

Program Windows PowerShell to łatwe w użyciu środowisko powłoki wiersza polecenia i skryptów służące do automatyzowania zadań administracyjnych systemów z systemem Windows. Program Windows PowerShell jest wstępnie zainstalowany we wszystkich nowoczesnych wersjach systemu operacyjnego Windows.

Gdzie znaleźć program PowerShell

Najprostszym sposobem znalezienia programu PowerShell w systemie Windows 11 jest wpisanie PowerShell na pasku wyszukiwania, jak pokazano na rysunku 1–1. Zwróć uwagę, że istnieją cztery różne skróty dla programu Windows PowerShell.

Rysunek 1–1 — wyszukiwanie programu PowerShell.

Skróty programu Windows PowerShell w 64-bitowej wersji systemu Windows:

  • Windows PowerShell
  • Windows PowerShell ISE
  • Windows PowerShell (x86)
  • Windows PowerShell ISE (x86)

W 64-bitowej wersji systemu Windows masz 64-bitową wersję konsoli programu Windows PowerShell i zintegrowane środowisko skryptów środowiska Windows PowerShell (ISE) oraz 32-bitową wersję każdego z nich, jak wskazano w sufiksie (x86) na skrótach.

Uwaga

System Windows 11 jest dostarczany tylko jako 64-bitowy system operacyjny. Nie ma 32-bitowej wersji systemu Windows 11. Jednak system Windows 11 zawiera 32-bitowe wersje programu Windows PowerShell i środowiska Windows PowerShell ISE.

Masz tylko dwa skróty, jeśli korzystasz ze starszej 32-bitowej wersji systemu Windows. Te skróty nie mają sufiksu (x86), ale są wersjami 32-bitowymi.

Zalecam korzystanie z 64-bitowej wersji programu Windows PowerShell, jeśli korzystasz z 64-bitowego systemu operacyjnego, chyba że masz określoną przyczynę korzystania z wersji 32-bitowej.

W zależności od używanej wersji systemu Windows 11 program Windows PowerShell może zostać otwarty w Terminal Windows.

Firma Microsoft nie aktualizuje już środowiska PowerShell ISE. Środowisko ISE działa tylko z programem Windows PowerShell 5.1. Program Visual Studio Code (VS Code ) z rozszerzeniem programu PowerShell współdziała z obiem wersjami programu PowerShell. Program VS Code i rozszerzenie programu PowerShell nie są dostarczane w systemie Windows. Zainstaluj program VS Code i rozszerzenie na komputerze, na którym tworzysz skrypty programu PowerShell. Nie trzeba ich instalować na wszystkich komputerach, na których jest uruchamiany program PowerShell.

Jak uruchomić program PowerShell

Używam trzech różnych kont użytkowników usługi Active Directory w środowiskach produkcyjnych, które obsługujem. Dublowałem te konta w środowisku laboratoryjnym używanym w tej książce. Zaloguję się do mojego komputera z systemem Windows 11 jako użytkownik domeny bez uprawnień domeny lub administratora lokalnego.

Uruchom konsolę programu PowerShell, klikając skrót programu Windows PowerShell, jak pokazano na rysunku 1–1. Zwróć uwagę, że na pasku tytułu konsoli jest wyświetlany program Windows PowerShell, jak pokazano na rysunku 1–2.

Rysunek 1–2 — pasek tytułu okna programu PowerShell.

Niektóre polecenia działają prawidłowo po uruchomieniu programu PowerShell jako zwykły użytkownik. Jednak program PowerShell nie 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.

Uwaga

Kontrola konta użytkownika to funkcja zabezpieczeń systemu Windows, która ułatwia zapobieganie uruchamianiu złośliwego kodu z podwyższonym poziomem uprawnień.

Po zalogowaniu się jako zwykły użytkownik program PowerShell zwraca błąd podczas uruchamiania polecenia wymagającego podniesienia uprawnień. Na przykład zatrzymanie usługi systemu Windows:

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

Rozwiązaniem jest uruchomienie programu PowerShell z podwyższonym poziomem uprawnień jako użytkownik będący administratorem lokalnym. W ten sposób skonfigurowano drugie konto użytkownika domeny. Zgodnie z zasadą najniższych uprawnień to konto nie powinno być administratorem domeny ani nie ma żadnych podniesionych uprawnień w domenie.

Aby uruchomić program PowerShell z podwyższonym poziomem uprawnień, kliknij prawym przyciskiem myszy skrót programu Windows PowerShell i wybierz polecenie Uruchom jako administrator, jak pokazano na rysunku 1–3.

Rysunek 1–3 — menu kontekstowe — Uruchom jako administrator.

System Windows monituje o podanie poświadczeń, ponieważ zalogowano się do systemu Windows jako zwykły użytkownik. Wprowadź poświadczenia użytkownika domeny, który jest administratorem lokalnym, jak pokazano na rysunku 1–4.

Rysunek 1–4 — Kontrola konta użytkownika — wprowadź poświadczenia.

Zwróć uwagę, że pasek tytułu okna konsoli z podwyższonym poziomem uprawnień ma wartość Administrator: Windows PowerShell, jak pokazano na rysunku 1–5.

Rysunek 1–5 — pasek tytułu okna programu PowerShell z podwyższonym poziomem uprawnień.

Teraz, gdy używasz programu PowerShell z podwyższonym poziomem uprawnień jako administrator, kontrola konta użytkownika nie jest już problemem podczas uruchamiania polecenia wymagającego podniesienia uprawnień.

Ważne

Należy uruchomić program PowerShell z podwyższonym poziomem uprawnień jako administrator, jeśli jest to absolutnie konieczne.

W przypadku komputerów zdalnych nie trzeba uruchamiać programu PowerShell z podwyższonym poziomem uprawnień. Uruchomienie programu PowerShell z podwyższonym poziomem uprawnień ma wpływ tylko na polecenia uruchamiane na komputerze lokalnym.

Możesz uprościć znajdowanie i uruchamianie programu PowerShell. Przypnij skrót programu PowerShell lub Terminal Windows do paska zadań. Ponownie wyszukaj program PowerShell, z wyjątkiem tego czasu kliknij go prawym przyciskiem myszy i wybierz polecenie Przypnij do paska zadań, jak pokazano na rysunku 1–6.

Rysunek 1–6 — menu kontekstowe — przypnij do paska zadań.

Ważne

Oryginalna wersja tej książki, opublikowana w 2017 r., zaleca przypinanie skrótu do paska zadań w celu automatycznego uruchamiania wystąpienia z podwyższonym poziomem uprawnień za każdym razem, gdy uruchamiasz program PowerShell. Jednak ze względu na potencjalne obawy dotyczące bezpieczeństwa, nie polecam go już. Wszystkie aplikacje uruchamiane z wystąpienia programu PowerShell z podwyższonym poziomem uprawnień również pomijają dostęp użytkownika i uruchamiają podwyższony poziom uprawnień. Jeśli na przykład uruchomisz przeglądarkę internetową z podwyższonym poziomem uprawnień wystąpienia programu PowerShell, każda odwiedzana witryna internetowa zawierająca złośliwy kod również zostanie uruchomiony z podwyższonym poziomem uprawnień.

Jeśli musisz uruchomić program PowerShell z podwyższonym poziomem uprawnień, kliknij prawym przyciskiem myszy skrót programu PowerShell przypięty do paska zadań, naciskając Shift. Wybierz pozycję Uruchom jako administrator, jak pokazano na rysunku 1–7.

Rysunek 1–7 — menu kontekstowe — Uruchom jako administrator.

Określanie wersji programu PowerShell

W programie PowerShell istnieją zmienne automatyczne, które przechowują informacje o stanie. Jedną z tych zmiennych jest $PSVersionTable, która zawiera informacje o wersji sesji programu PowerShell.

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

Jeśli używasz wersji programu Windows PowerShell starszej niż 5.1, zaktualizuj wersję systemu Windows. Program Windows PowerShell 5.1 jest wstępnie zainstalowany w aktualnie obsługiwanych wersjach systemu Windows.

Program PowerShell w wersji 7 nie zastępuje programu Windows PowerShell 5.1; program instaluje program Windows PowerShell obok siebie. Program Windows PowerShell w wersji 5.1 i program PowerShell w wersji 7 to dwa różne produkty. Aby uzyskać więcej informacji na temat różnic między programem Windows PowerShell w wersji 5.1 i programu PowerShell w wersji 7, zobacz Migrowanie z programu Windows PowerShell 5.1 do programu PowerShell 7.

Napiwek

Program PowerShell w wersji 6, wcześniej znany jako PowerShell Core, nie jest już obsługiwany.

Zasady wykonywania

Zasady wykonywania programu PowerShell kontrolują warunki, w których można uruchamiać skrypty programu PowerShell. Zasady wykonywania w programie PowerShell to funkcja bezpieczeństwa, która pomaga zapobiegać przypadkowemu wykonywaniu złośliwych skryptów. Nie jest to jednak granica zabezpieczeń, ponieważ nie może powstrzymać określonych użytkowników od celowo uruchamiania skryptów. Określony użytkownik może pominąć zasady wykonywania w programie PowerShell.

Można ustawić zasady wykonywania dla komputera lokalnego, bieżącego użytkownika lub sesji programu PowerShell. Można również ustawić zasady wykonywania dla użytkowników i komputerów za pomocą zasad grupy.

W poniższej tabeli przedstawiono domyślne zasady wykonywania dla bieżących systemów operacyjnych Windows.

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

Niezależnie od ustawienia zasad wykonywania można uruchomić dowolne polecenie programu PowerShell interaktywnie. Zasady wykonywania mają wpływ tylko na polecenia uruchomione w skrycie. Get-ExecutionPolicy Użyj polecenia cmdlet , aby określić bieżące ustawienie zasad wykonywania.

Sprawdź ustawienie zasad wykonywania na komputerze.

Get-ExecutionPolicy
Restricted

Wyświetl listę ustawień zasad wykonywania dla wszystkich zakresów.

Get-ExecutionPolicy -List
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined

Wszystkie systemy operacyjne klienta systemu Windows mają domyślne ustawienie Restrictedzasad wykonywania . Nie można uruchamiać skryptów programu PowerShell przy użyciu Restricted ustawienia zasad wykonywania. Aby przetestować zasady wykonywania, zapisz następujący kod jako .ps1 plik o nazwie Get-TimeService.ps1.

Napiwek

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

Po interakcyjnym uruchomieniu następującego polecenia kończy się bez błędu.

Get-Service -Name W32Time

Program PowerShell zwraca jednak błąd podczas uruchamiania tego samego polecenia ze skryptu.

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

Po uruchomieniu polecenia w programie PowerShell, które generuje błąd, przeczytaj komunikat o błędzie przed ponowieniu próby polecenia. Zwróć uwagę, że komunikat o błędzie informuje o tym, dlaczego polecenie nie powiodło się:

... uruchamianie skryptów jest wyłączone w tym systemie.

Aby włączyć wykonywanie skryptów, zmień zasady wykonywania za pomocą Set-ExecutionPolicy polecenia cmdlet . LocalMachine jest zakresem domyślnym, jeśli nie określisz parametru Zakres . Aby zmienić zasady wykonywania maszyny lokalnej, należy uruchomić program PowerShell z podwyższonym poziomem uprawnień jako administrator. Jeśli nie podpiszesz skryptów, zalecam użycie RemoteSigned zasad wykonywania. RemoteSigned uniemożliwia uruchamianie pobranych skryptów, które nie są podpisane przez zaufanego wydawcę.

Przed zmianą zasad wykonywania przeczytaj artykuł about_Execution_Policies pomocy, aby zrozumieć implikacje dotyczące zabezpieczeń.

Zmień ustawienie zasad wykonywania na komputerze na RemoteSigned.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Jeśli zasady wykonywania zostały pomyślnie zmienione, program PowerShell wyświetli następujące ostrzeżenie:

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
https:/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

Jeśli nie używasz programu PowerShell z podwyższonym poziomem uprawnień jako administrator, program PowerShell zwraca następujący komunikat o błędzie:

Set-ExecutionPolicy : Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWAR
E\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied. To
change the execution policy for the default (LocalMachine) scope, start
Windows PowerShell with the "Run as administrator" option. To change the
execution policy for the current user, run "Set-ExecutionPolicy -Scope
CurrentUser".
At line:1 char:1
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (:) [Set-ExecutionPolicy],
   UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.
   PowerShell.Commands.SetExecutionPolicyCommand

Istnieje również możliwość zmiany zasad wykonywania dla bieżącego użytkownika bez konieczności uruchamiania programu PowerShell z podwyższonym poziomem uprawnień jako administrator. Ten krok jest niepotrzebny, jeśli pomyślnie ustawisz zasady wykonywania dla komputera lokalnego na RemoteSignedwartość .

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Po ustawieniu zasad wykonywania na RemoteSigned, Get-TimeService.ps1 skrypt zostanie uruchomiony pomyślnie.

.\Get-TimeService.ps1
Status   Name               DisplayName
------   ----               -----------
Running  W32Time            Windows Time

Podsumowanie

W tym rozdziale przedstawiono, gdzie znaleźć i jak uruchomić program PowerShell. Przedstawiono również sposób określania wersji programu PowerShell i przeznaczenia zasad wykonywania.

Wykonaj przegląd

  1. Jak określić, jaka wersja programu PowerShell jest uruchomiona?
  2. Kiedy należy uruchomić program PowerShell z podwyższonym poziomem uprawnień jako administrator?
  3. Jakie są domyślne zasady wykonywania na komputerach klienckich z systemem Windows i co uniemożliwia wykonywanie?
  4. Jak określić bieżące ustawienie zasad wykonywania programu PowerShell?
  5. Jak zmienić zasady wykonywania programu PowerShell?

Informacje

Aby dowiedzieć się więcej na temat pojęć omówionych w tym rozdziale, przeczytaj następujące artykuły pomocy programu PowerShell.

Następne kroki

W następnym rozdziale dowiesz się więcej o możliwości odnajdywania poleceń w programie PowerShell. Dowiesz się również, jak pobrać pliki pomocy programu PowerShell, aby wyświetlić pomoc w sesji programu PowerShell.