Rozdział 1 — Wprowadzenie przy użyciu programu PowerShellChapter 1 - Getting Started with PowerShell

Często wiemy, że obecnie prezenterzy i spotkania grup użytkowników mają już uruchomiony program PowerShell, gdy rozpoczynają prezentacje na poziomie wejścia.I often find that presenters at conferences and user group meetings already have PowerShell running when they start entry-level presentations. Ta książka zaczyna się od odpowiedzi na pytania, które zostały wystawione przez osoby, które nie korzystały wcześniej z programu PowerShell.This book begins by answering the questions I've heard attendees who haven't previously used PowerShell ask in those sessions.

W tym rozdziale koncentruje się na znajdowaniu i uruchamianiu programu PowerShell oraz rozwiązywaniu niektórych początkowych punktów, które nowe użytkownicy środowiska programu PowerShell.Specifically, this chapter focuses on finding and launching PowerShell, and solving some of the initial pain points that new users experience with PowerShell. Zapoznaj się z przykładami przedstawionymi w tym rozdziale na komputerze ze środowiskiem laboratoryjnym systemu Windows 10.Be sure to follow along and walk through the examples shown in this chapter on your Windows 10 lab environment computer.

Co muszę zacząć korzystać z programu PowerShell?What do I need to get started with PowerShell?

Wszystkie nowoczesne wersje systemów operacyjnych Windows są dostarczane z zainstalowanym programem PowerShell.All modern versions of Windows operating systems ship with PowerShell installed. Jeśli używasz wersji starszej niż 5,1, należy zainstalować najnowszą wersję.If you're running a version older than 5.1, you should install the latest version.

Gdzie mogę znaleźć program PowerShell?Where do I find PowerShell?

Najprostszym sposobem znalezienia programu PowerShell w systemie Windows 10 jest wpisanie programu PowerShell na pasku wyszukiwania, jak pokazano na rysunku 1-1.The easiest way to find PowerShell on Windows 10 is to type PowerShell into the search bar as shown in Figure 1-1.

Rysunek 1-1. wyszukiwanie programu PowerShell w menu Start

Należy zauważyć, że cztery różne skróty dla programu PowerShell przedstawiono na rysunku 1-1.Notice that four different shortcuts for PowerShell are shown in Figure 1-1. Komputer używany do celów demonstracyjnych w tej książce korzysta z 64-bitowej wersji systemu Windows 10, aby uzyskać 64-bitową wersję konsoli programu PowerShell i programu PowerShell ISE (zintegrowane środowisko obsługi skryptów) oraz 32-bitową wersję każdego z nich, zgodnie z sufiksem (x86) na skrótach.The computer used for demonstration purposes in this book is running the 64-bit version of Windows 10 so there's a 64-bit version of the PowerShell console and the PowerShell ISE (Integrated Scripting Environment), and a 32-bit version of each one as denoted by the (x86) suffix on the shortcuts. W przypadku korzystania z 32-bitowej wersji systemu Windows 10 będziesz mieć tylko dwa skróty.If you happen to be running a 32-bit version of Windows 10, you'll only have two shortcuts. Elementy te nie mają sufiksu (x86), ale są 32-bitowe.Those items don't have the (x86) suffix, but are 32-bit versions. Jeśli masz 64-bitowy system operacyjny, mam zaleceń, aby uruchomić 64-bitową wersję programu PowerShell, chyba że masz konkretną przyczynę do uruchomienia 32-bitowej wersji.If you have a 64-bit operating system, my recommendation is to run the 64-bit version of PowerShell unless you have a specific reason for running the 32-bit version.

Aby uzyskać informacje o uruchamianiu programu PowerShell w innych wersjach systemu Windows, zobacz Uruchamianie programu Windows PowerShell.For information about starting PowerShell on other versions of Windows, see Starting Windows PowerShell.

Jak mogę uruchomić program PowerShell?How do I launch PowerShell?

W środowisku produkcyjnym, które obsługujesz, korzystam z trzech różnych Active Directory kont użytkowników.In the production enterprise environments that I support, I use three different Active Directory user accounts. Te konta zostały zdublowane w środowisku laboratoryjnym używanym w tej książce.I've mirrored those accounts in the lab environment used in this book. Zaloguję się do komputera z systemem Windows 10 jako użytkownik domeny, który nie jest domeną lub administratorem lokalnym.I log into the Windows 10 computer as a domain user who is not a domain or local administrator.

Konsola programu PowerShell została uruchomiona, klikając skrót "Windows PowerShell", jak pokazano na rysunku 1-1.I've launched the PowerShell console by clicking on the "Windows PowerShell" shortcut as shown in Figure 1-1.

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

Zwróć uwagę, że na pasku tytułu konsoli programu PowerShell znajduje się napis "Windows PowerShell", jak pokazano na rysunku 1-4.Notice that the title bar of the PowerShell console says "Windows PowerShell" as shown in Figure 1-4. Niektóre polecenia działają prawidłowo, ale program PowerShell nie może uczestniczyć w programie User Access Control (UAC).Some commands run fine, but PowerShell can't participate in User Access Control (UAC). Oznacza to, że nie można wyświetlić monitu o podniesienie uprawnień dla zadań, które wymagają zatwierdzenia administratora.That means it's unable to prompt for elevation for tasks that require the approval of an administrator. Generowany jest następujący komunikat o błędzie:The following error message is generated:

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.The solution to this problem is to run PowerShell as a domain user who is a local administrator. Jest to sposób skonfigurowania drugiego konta użytkownika domeny.This is how my second domain user account is configured. Przy użyciu podmiotu zabezpieczeń najniższych uprawnień to konto nie powinno być administratorem domeny ani mieć podwyższonych uprawnień w domenie.Using the principal of least privilege, this account should NOT be a domain administrator, or have any elevated privileges in the domain.

Zamknij program PowerShell.Close PowerShell. Uruchom ponownie konsolę programu PowerShell, z tą różnicą, że kliknij prawym przyciskiem myszy skrót Windows PowerShell , a następnie wybierz polecenie Uruchom jako administrator , jak pokazano na rysunku 1-5.Relaunch the PowerShell console, except this time right-click on the Windows PowerShell shortcut and select Run as administrator as shown in Figure 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ń.If you're logged into Windows as a normal user, you'll be prompted for credentials. Wprowadzimy poświadczenia konta użytkownika, które jest użytkownikiem domeny i administratorem lokalnym, jak pokazano na rysunku 1-6.I'll enter the credentials for my user account who is a domain user and local admin as shown in Figure 1-6.

Rysunek 1-6

Po ponownym uruchomieniu programu PowerShell jako administrator pasek tytułu powinien powiedzieć "Administrator: Windows PowerShell", jak pokazano na rysunku 1-7.Once PowerShell is relaunched as an administrator, the title bar should say "Administrator: Windows PowerShell" as shown in Figure 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ń.Now that PowerShell is being run elevated as a local administrator, UAC will no longer be a problem when a command is run on the local computer that would normally require a prompt for elevation. Należy pamiętać, że wszystkie polecenia uruchamiane z tego podwyższonego wystąpienia konsoli programu PowerShell również są uruchamiane z podwyższonym poziomem uprawnień.Keep in mind though that any command run from this elevated instance of the PowerShell console, also runs elevated.

Aby uprościć Znajdowanie programu PowerShell i uruchamianie go jako administrator, zalecamy Przypinanie go do paska zadań i ustawienie go do automatycznego uruchamiania jako administrator przy każdym uruchomieniu.To simplify finding PowerShell and launching it as an administrator, I recommend pinning it to the taskbar and setting it to automatically launch as an admin each time it's run.

Wyszukaj ponownie program PowerShell, z wyjątkiem tego, kliknij prawym przyciskiem myszy, a następnie wybierz pozycję "Przypnij do paska zadań", jak pokazano na rysunku 1-8.Search for PowerShell again, except this time right-click on it and select "Pin to taskbar" as shown in Figure 1-8.

Rysunek 1-8

Kliknij prawym przyciskiem myszy skrót programu PowerShell, który jest teraz przypięty do paska zadań, a następnie wybierz polecenie Właściwości, jak pokazano na rysunku 1-9.Right-click on the PowerShell shortcut that's now pinned to the taskbar and select properties as shown in Figure 1-9.

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

Kliknij pozycję "Advanced", tak #1 jak pokazano na rysunku 1-10, a następnie zaznacz pole wyboru "Uruchom jako administrator" zgodnie z opisem #2 na rysunku 1-10, a następnie kliknij dwukrotnie przycisk OK, aby zaakceptować zmiany i wyjść z obu okien dialogowych.Click on "Advanced" as denoted by #1 in Figure 1-10, then check the "Run as administrator" checkbox as denoted by #2 in Figure 1-10, and then click OK twice to accept the changes and exit out of both dialog boxes.

Rysunek 1-10. pasek tytułu przedstawiający "Administrator"

Nie musisz martwić się o znalezienie programu PowerShell ani tego, czy jest on ponownie uruchomiony jako administrator.You'll never have to worry about finding PowerShell or whether or not it's running as an administrator again.

Uruchamianie programu PowerShell z podwyższonym poziomem uprawnień jako administrator, aby zapobiec problemom z usługą UAC tylko na poleceniach, które są uruchamiane na komputerze lokalnym.Running PowerShell elevated as an administrator to prevent having problems with UAC only impacts commands that are run against the local computer. Nie ma ona wpływu na polecenia, które są przeznaczone do komputerów zdalnych.It has no effect on commands that target remote computers.

Jaka wersja programu PowerShell jest uruchomiona?What version of PowerShell am I running?

W programie PowerShell istnieje kilka zmiennych automatycznych, które przechowują informacje o stanie.There are a number of automatic variables in PowerShell that store state information. Jedną z tych zmiennych jest $PSVersionTable , która zawiera tablicę skrótów, która może służyć do wyświetlania odpowiednich informacji o wersji programu PowerShell:One of these variables is $PSVersionTable, which contains a hashtable that can be used to display the relevant PowerShell version information:

$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).Newer versions of Windows PowerShell are distributed as part of the Windows Management Framework (WMF). Określona wersja .NET Framework jest wymagana w zależności od wersji programu WMF.A specific version of the .NET Framework is required depending on the WMF version. Aby przeprowadzić uaktualnienie do programu Windows PowerShell 5,1, zobacz uaktualnianie istniejącego środowiska Windows PowerShell.To upgrade to Windows PowerShell 5.1, see Upgrading existing Windows PowerShell.

Zasady wykonywaniaExecution Policy

W przeciwieństwie do popularnych przekonania zasady wykonywania w programie PowerShell nie są granicą zabezpieczeń.Contrary to popular belief, the execution policy in PowerShell is not a security boundary. Zaprojektowano, aby uniemożliwić użytkownikowi nieświadome uruchomienie skryptu.It's designed to prevent a user from unknowingly running a script. Określony użytkownik może łatwo ominąć zasady wykonywania w programie PowerShell.A determined user can easily bypass the execution policy in PowerShell. W tabeli 1-2 przedstawiono domyślne zasady wykonywania dla bieżących systemów operacyjnych Windows.Table 1-2 shows the default execution policy for current Windows operating systems.

Wersja systemu operacyjnego WindowsWindows Operating System Version Domyślne zasady wykonywaniaDefault Execution Policy
Server 2019Server 2019 Podpisana zdalnieRemote Signed
Server 2016Server 2016 Podpisana zdalnieRemote Signed
Windows 10Windows 10 Z ograniczeniamiRestricted

Niezależnie od ustawienia zasad wykonywania, każde polecenie programu PowerShell może być uruchamiane interaktywnie.Regardless of the execution policy setting, any PowerShell command can be run interactively. Zasady wykonywania mają wpływ tylko na polecenia działające w skrypcie.The execution policy only affects commands running in a script. Get-ExecutionPolicyPolecenie cmdlet służy do określenia, jakie bieżące ustawienie zasad wykonania jest, a Set-ExecutionPolicy polecenie cmdlet służy do zmiany zasad wykonywania.The Get-ExecutionPolicy cmdlet is used to determine what the current execution policy setting is and the Set-ExecutionPolicy cmdlet is used to change the execution policy. My rekomendacja to użycie zasad RemoteSigned , które wymagają, aby pobrane skrypty były podpisane przez zaufanego wydawcę w celu uruchomienia.My recommendation is to use the RemoteSigned policy, which requires downloaded scripts to be signed by a trusted publisher in order to be run.

Sprawdź bieżące zasady wykonywania:Check the current execution policy:

Get-ExecutionPolicy
Restricted

Skrypty programu PowerShell nie mogą być uruchamiane w ogóle, gdy zasady wykonywania mają wartość ograniczone.PowerShell scripts can't be run at all when the execution policy is set to Restricted. Jest to ustawienie domyślne we wszystkich systemach operacyjnych klienta Windows.This is the default setting on all Windows client operating systems. Aby zademonstrować ten problem, Zapisz następujący kod jako .ps1 plik o nazwie Stop-TimeService.ps1 .To demonstrate the problem, save the following code as a .ps1 file named Stop-TimeService.ps1.

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

To polecenie działa interaktywnie bez błędu, o ile program PowerShell jest uruchamiany z podwyższonym poziomem uprawnień jako administrator.That command runs interactively without error as long as PowerShell is run elevated as an administrator. Jednak gdy tylko zostanie zapisany jako plik skryptu i podjęto próbę wykonania skryptu, generuje błąd:But as soon as it's saved as a script file and you try to execute the script, it generates an error:

.\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 przedstawiony w poprzednim zestawie wyników informuje o tym, jak to problem występuje (uruchamianie skryptów jest wyłączone w tym systemie).Notice that the error shown in the previous set of results tells you exactly what the problem is (running scripts is disabled on this system). Po uruchomieniu polecenia w programie PowerShell, które generuje komunikat o błędzie, pamiętaj, aby odczytać komunikat o błędzie zamiast tylko ponownie uruchomić polecenie i zostaje, że działa prawidłowo.When you run a command in PowerShell that generates an error message, be sure to read the error message instead of just rerunning the command and hoping that it runs successfully.

Zmień zasady wykonywania programu PowerShell na zdalne ze znakiem.Change the PowerShell execution policy to remote signed.

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, które jest wyświetlane podczas zmieniania zasad wykonywania.Be sure to read the warning that's displayed when changing the execution policy. Zaleca się również przechodzenie do about_Execution_Policies tematu pomocy, aby poznać kwestie zabezpieczeń związane z zmianami zasad wykonywania.I also recommend taking a look at the about_Execution_Policies help topic to make sure you understand the security implications of changing the execution policy.

Teraz, gdy zasady wykonywania zostały ustawione na RemoteSigned, Stop-TimeService.ps1 skrypt uruchamia się bezpłatnie.Now that the execution policy has been set to RemoteSigned, the Stop-TimeService.ps1 script runs error free.

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

Upewnij się, że usługa czas systemu Windows została uruchomiona przed kontynuowaniem, w przeciwnym razie może wystąpić nieprzewidziane problemy.Be sure to start your Windows Time service before continuing otherwise you may run into unforeseen problems.

Start-Service -Name w32time

PodsumowanieSummary

W tym rozdziale przedstawiono sposób znajdowania i uruchamiania programu PowerShell oraz tworzenia skrótu, który uruchamia program PowerShell jako administrator.In this chapter, you've learned how to find and launch PowerShell, and how to create a shortcut that launches PowerShell as an administrator. Zawarto również informacje o domyślnych zasadach wykonywania i sposobach ich zmiany.You've also learned about the default execution policy and how to change it.

PrzeglądReview

  1. Jak ustalić, jaka wersja programu PowerShell jest uruchomiona na komputerze?How do you determine what PowerShell version a computer is running?
  2. Dlaczego ważne jest, aby uruchomić program PowerShell z podwyższonym poziomem uprawnień jako administrator?Why is it important to launch PowerShell elevated as an administrator?
  3. Jak ustalić bieżące zasady wykonywania programu PowerShell?How do you determine the current PowerShell execution policy?
  4. Co uniemożliwia wystąpienia domyślnych zasad wykonywania programu PowerShell na komputerach klienckich z systemem Windows?What does the default PowerShell execution policy on Windows client computers prevent from occurring?
  5. Jak zmienić zasady wykonywania programu PowerShell?How do you change the PowerShell execution policy?

Dla osób, które chcą poznać więcej informacji na temat tematów objętych tym rozdziałem, zaleca się przeczytanie następujących tematów pomocy programu PowerShell.For those who want to know more information about the topics covered in this chapter, I recommend reading the following PowerShell help topics.

W następnym rozdziale znajdziesz informacje na temat odnajdywania poleceń w programie PowerShell.In the next chapter, you'll learn about the discoverability of commands in PowerShell. Jedną z elementów, które zostaną omówione, jest sposób aktualizowania programu PowerShell, dzięki czemu tematy pomocy mogą być wyświetlane bezpośrednio w programie PowerShell, a nie muszą być wyświetlane w Internecie.One of the things that will be covered is how to update PowerShell so those help topics can be viewed right from within PowerShell instead of having to view them on the internet.