1. fejezet – Első lépések a PowerShell-lelChapter 1 - Getting Started with PowerShell

Gyakran megtalálom, hogy a konferenciákon és a felhasználói csoportok ülésein lévő bemutatók már rendelkeznek a PowerShell futtatásával, amikor megkezdik a belépési szintű bemutatókat.I often find that presenters at conferences and user group meetings already have PowerShell running when they start entry-level presentations. A könyv első lépéseként megválaszolja azokat a résztvevőket, akik korábban még nem használták PowerShell-kérést a munkamenetekben.This book begins by answering the questions I've heard attendees who haven't previously used PowerShell ask in those sessions.

Ez a fejezet a PowerShell megkeresésére és indítására, valamint az új felhasználók által a PowerShell-lel kapcsolatos kezdeti fájdalmak megoldására koncentrál.Specifically, this chapter focuses on finding and launching PowerShell, and solving some of the initial pain points that new users experience with PowerShell. Ügyeljen rá, hogy kövesse az ebben a fejezetben bemutatott példákat a Windows 10 Lab-környezet számítógépén.Be sure to follow along and walk through the examples shown in this chapter on your Windows 10 lab environment computer.

Mire van szükségem a PowerShell megkezdéséhez?What do I need to get started with PowerShell?

A Windows operációs rendszerek minden modern verziója telepítve van a PowerShell-lel.All modern versions of Windows operating systems ship with PowerShell installed. Ha 5,1-nál régebbi verziót futtat, telepítse a legújabb verziót.If you're running a version older than 5.1, you should install the latest version.

Hol találom a PowerShellt?Where do I find PowerShell?

A Windows 10-es PowerShell megkeresésének legegyszerűbb módja a PowerShell beírása a keresősávba az 1-1. ábrán látható módon.The easiest way to find PowerShell on Windows 10 is to type PowerShell into the search bar as shown in Figure 1-1.

1-1. ábra – PowerShell keresése a Start menüben

Figyelje meg, hogy a PowerShell négy különböző billentyűparancsa látható az 1-1. ábrán.Notice that four different shortcuts for PowerShell are shown in Figure 1-1. A jelen könyvben bemutató célra használt számítógép a Windows 10-es 64-bites verzióját futtatja, így a PowerShell-konzol és a PowerShell ISE (integrált parancsfájl-kezelési környezet) 64-bites verziója és a (z) egy 32 bites verziója van, amelyet a parancsikonok (x86) utótagja jelöl.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. Ha a Windows 10 32-bites verzióját futtatja, csak két parancsikonra lesz szüksége.If you happen to be running a 32-bit version of Windows 10, you'll only have two shortcuts. Ezek az elemek nem rendelkeznek a (x86) utótaggal, de a 32 bites verziók.Those items don't have the (x86) suffix, but are 32-bit versions. Ha 64 bites operációs rendszerrel rendelkezik, a javaslatom a PowerShell 64-bites verziójának futtatása, ha nem rendelkezik konkrét indokkal a 32 bites verzió futtatásához.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.

További információ a Windows más verzióin futó PowerShell elindításáról: a [Windows PowerShell elindítása][].For information about starting PowerShell on other versions of Windows, see Starting Windows PowerShell.

Hogyan elindítja a PowerShellt?How do I launch PowerShell?

Az által támogatott éles vállalati környezetekben három különböző Active Directory felhasználói fiókot használok.In the production enterprise environments that I support, I use three different Active Directory user accounts. Tükrözöttem ezeket a fiókokat a jelen könyvben használt labor-környezetben.I've mirrored those accounts in the lab environment used in this book. Bejelentkezhetek a Windows 10 rendszerű számítógépre tartományi felhasználóként, aki nem tartományi vagy helyi rendszergazda.I log into the Windows 10 computer as a domain user who is not a domain or local administrator.

Elindítottam a PowerShell-konzolt az 1-1 ábrán látható "Windows PowerShell" parancsikonra kattintva.I've launched the PowerShell console by clicking on the "Windows PowerShell" shortcut as shown in Figure 1-1.

1-4. ábra – a PowerShell-ablak címsora

Figyelje meg, hogy a PowerShell-konzol címsora azt jelzi, hogy a "Windows PowerShell" a 1-4. ábrán látható.Notice that the title bar of the PowerShell console says "Windows PowerShell" as shown in Figure 1-4. Egyes parancsok rendben futnak, de a PowerShell nem tud részt venni a felhasználói Access Controlban (UAC).Some commands run fine, but PowerShell can't participate in User Access Control (UAC). Ez azt jelenti, hogy nem kérheti a jogosultságszint-emelést olyan feladatokra, amelyek a rendszergazda jóváhagyását igénylik.That means it's unable to prompt for elevation for tasks that require the approval of an administrator. A rendszer a következő hibaüzenetet hozza létre: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

A probléma megoldásához a PowerShellt tartományi felhasználóként kell futtatni, aki helyi rendszergazda.The solution to this problem is to run PowerShell as a domain user who is a local administrator. Hogyan van konfigurálva a második tartományi felhasználói fiók.This is how my second domain user account is configured. A legalacsonyabb jogosultsági szintű rendszerbiztonsági tag használata esetén ez a fiók nem lehet tartományi rendszergazda, vagy emelt szintű jogosultságokkal rendelkezik a tartományban.Using the principal of least privilege, this account should NOT be a domain administrator, or have any elevated privileges in the domain.

A PowerShell bezárásához.Close PowerShell. Indítsa újra a PowerShell-konzolt, kivéve a jobb gombbal a Windows PowerShell parancsikonra, majd válassza a Futtatás rendszergazdaként lehetőséget az 1-5. ábrán látható módon.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.

1-5. ábra – helyi menü – Futtatás rendszergazdaként

Ha normál felhasználóként jelentkezett be a Windowsba, a rendszer kérni fogja a hitelesítő adatok megadását.If you're logged into Windows as a normal user, you'll be prompted for credentials. Adja meg a felhasználói fiókhoz tartozó hitelesítő adatokat, amely tartományi felhasználó és helyi rendszergazda az 1-6. ábrán látható módon.I'll enter the credentials for my user account who is a domain user and local admin as shown in Figure 1-6.

1-6. ábra

A PowerShell rendszergazdaként való újraindítása után a címsornak a "rendszergazda: Windows PowerShell" kifejezést kell kimondania, ahogy az 1-7. ábrán látható.Once PowerShell is relaunched as an administrator, the title bar should say "Administrator: Windows PowerShell" as shown in Figure 1-7.

1-7. ábra

Most, hogy a PowerShell helyi rendszergazdaként fut, a felhasználói fiókok felügyelete többé nem lesz probléma, ha olyan parancsot futtatnak a helyi számítógépen, amely általában jogosultságszint-emelési kérést igényel.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. Ne feledje azonban, hogy a PowerShell-konzol ezen emelt példányáról futtatott parancsok is emelt szintű futtatást futtatnak.Keep in mind though that any command run from this elevated instance of the PowerShell console, also runs elevated.

A PowerShell megtalálásának leegyszerűsítése és rendszergazdaként történő elindítása esetén azt javasoljuk, hogy a tálcán rögzítse azt, és állítsa be úgy, hogy automatikusan rendszergazdaként induljon el minden egyes futtatásakor.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.

Keresse meg újra a PowerShellt, csak kattintson rá a jobb gombbal, és válassza a "rögzítés a tálcán" lehetőséget az 1-8. ábrán látható módon.Search for PowerShell again, except this time right-click on it and select "Pin to taskbar" as shown in Figure 1-8.

1-8. ábra

Kattintson a jobb gombbal a tálcán rögzített PowerShell-parancsikonra, majd válassza a tulajdonságok lehetőséget az 1-9. ábrán látható módon.Right-click on the PowerShell shortcut that's now pinned to the taskbar and select properties as shown in Figure 1-9.

1-9. ábra – felhasználói fiókok felügyelete – hitelesítő adatok megadása

Kattintson a "speciális" elemre #1 alapján, az 1-10. ábrán látható módon, majd jelölje be a "Futtatás rendszergazdaként" jelölőnégyzetet az 1-10. ábrán #2 alapján, majd kattintson kétszer az OK gombra a módosítások elfogadásához és a két párbeszédpanelből való kilépéshez.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.

1-10. ábra – a "rendszergazda" címet megjelenítő címsor

Soha nem kell aggódnia a PowerShell megtalálásával kapcsolatban, illetve hogy a rendszergazdaként fut-e vagy sem.You'll never have to worry about finding PowerShell or whether or not it's running as an administrator again.

A PowerShell rendszergazdaként való futtatásával megakadályozhatja, hogy a felhasználói fiókok felügyelete csak a helyi számítógépen futó parancsokat befolyásolja.Running PowerShell elevated as an administrator to prevent having problems with UAC only impacts commands that are run against the local computer. Nincs hatása a távoli számítógépeket megcélzó parancsokra.It has no effect on commands that target remote computers.

A PowerShell milyen verziója fut?What version of PowerShell am I running?

A PowerShellben számos, az állapotadatok tárolására szolgáló automatikus változó található.There are a number of automatic variables in PowerShell that store state information. Ezen változók egyike a (z) $PSVersionTable , amely egy szórótábla tartalmaz, amely a megfelelő PowerShell-verzióra vonatkozó információk megjelenítésére használható: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

A Windows PowerShell újabb verziói a Windows Management Framework (WMF) részeként vannak elterjesztve.Newer versions of Windows PowerShell are distributed as part of the Windows Management Framework (WMF). A .NET-keretrendszer egy adott verzióját a WMF-verziótól függően kell megadni.A specific version of the .NET Framework is required depending on the WMF version. A Windows PowerShell 5,1-re való frissítéssel kapcsolatban lásd: a meglévő Windows PowerShell frissítése.To upgrade to Windows PowerShell 5.1, see Upgrading existing Windows PowerShell.

Végrehajtási házirendExecution Policy

A népszerű meggyőződéssel ellentétben a PowerShell végrehajtási szabályzata nem biztonsági határ.Contrary to popular belief, the execution policy in PowerShell is not a security boundary. A szolgáltatás úgy lett kialakítva, hogy megakadályozza, hogy a felhasználó tudatlanul futtasson egy parancsfájlt.It's designed to prevent a user from unknowingly running a script. Egy meghatározott felhasználó egyszerűen megkerülheti a végrehajtási szabályzatot a PowerShellben.A determined user can easily bypass the execution policy in PowerShell. Az 1-2-es táblázat a jelenlegi Windows operációs rendszerek alapértelmezett végrehajtási szabályzatát mutatja.Table 1-2 shows the default execution policy for current Windows operating systems.

Windows operációs rendszer verziójaWindows Operating System Version Alapértelmezett végrehajtási házirendDefault Execution Policy
Server 2019Server 2019 Távoli aláírásRemote Signed
Server 2016Server 2016 Távoli aláírásRemote Signed
Windows 10Windows 10 Korlátozott hozzáférésűRestricted

A végrehajtási házirend beállításától függetlenül a PowerShell-parancsok interaktív módon is futtathatók.Regardless of the execution policy setting, any PowerShell command can be run interactively. A végrehajtási házirend csak parancsfájlban futó parancsokat érint.The execution policy only affects commands running in a script. A Get-ExecutionPolicy parancsmag segítségével megállapítható, hogy mi a jelenlegi végrehajtási házirend-beállítás, és Set-ExecutionPolicy hogy a parancsmag a végrehajtási házirend módosítására szolgál.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. A saját javaslatom a RemoteSigned szabályzat használata, amelyhez a letöltött parancsfájlokat egy megbízható közzétevőnek kell aláírnia ahhoz, hogy futtatni lehessen.My recommendation is to use the RemoteSigned policy, which requires downloaded scripts to be signed by a trusted publisher in order to be run.

Az aktuális végrehajtási szabályzat megtekintése:Check the current execution policy:

Get-ExecutionPolicy
Restricted

A PowerShell-parancsfájlok nem futtathatók egyszerre, ha a végrehajtási házirend korlátozottértékűre van állítva.PowerShell scripts can't be run at all when the execution policy is set to Restricted. Ez az alapértelmezett beállítás az összes Windows ügyfél operációs rendszeren.This is the default setting on all Windows client operating systems. A probléma bemutatásához mentse a következő kódot egy .ps1 nevű fájlként 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

Ez a parancs interaktívan, hiba nélkül fut, amíg a PowerShell rendszergazdaként fut.That command runs interactively without error as long as PowerShell is run elevated as an administrator. De amint parancsfájlként menti, és megpróbálja végrehajtani a szkriptet, a következő hibaüzenetet generálja: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

Figyelje meg, hogy az előző eredményekben látható hiba azt jelzi, hogy pontosan mi a probléma (a parancsfájlok futtatása le van tiltva ezen a rendszeren).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). Amikor egy hibaüzenetet generáló PowerShell-parancsot futtat, mindenképpen olvassa el a hibaüzenetet a parancs újrafuttatása helyett, és reméli, hogy sikeresen lefut.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.

Módosítsa a PowerShell végrehajtási házirendjét a távoli aláírásra.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

Ügyeljen arra, hogy olvassa el a végrehajtási házirend módosításakor megjelenő figyelmeztetést.Be sure to read the warning that's displayed when changing the execution policy. Azt is javasoljuk, hogy tekintse meg az about_Execution_Policies Súgó témakört, és győződjön meg arról, hogy megértette a végrehajtási házirend módosításának biztonsági következményeit.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.

Most, hogy a végrehajtási szabályzat a RemoteSignedértékre van állítva, a Stop-TimeService.ps1 szkript ingyenes hibát futtat.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

A folytatás előtt mindenképpen indítsa el a Windows időszolgáltatását, ha nem előre nem látható problémákba kerül.Be sure to start your Windows Time service before continuing otherwise you may run into unforeseen problems.

Start-Service -Name w32time

ÖsszegzésSummary

Ebben a fejezetben megtanulta, hogyan keresheti meg és indíthatja el a PowerShellt, és hogyan hozhat létre olyan parancsikont, amely rendszergazdaként elindítja a PowerShellt.In this chapter, you've learned how to find and launch PowerShell, and how to create a shortcut that launches PowerShell as an administrator. Azt is megtanulta, hogyan módosíthatja az alapértelmezett végrehajtási szabályzatot.You've also learned about the default execution policy and how to change it.

ÁttekintésReview

  1. Hogyan állapítható meg, hogy melyik PowerShell-verziót futtatja a számítógép?How do you determine what PowerShell version a computer is running?
  2. Miért fontos elindítani a PowerShellt rendszergazdaként?Why is it important to launch PowerShell elevated as an administrator?
  3. Hogyan állapítható meg az aktuális PowerShell végrehajtási házirend?How do you determine the current PowerShell execution policy?
  4. Hogyan akadályozza meg a Windows-ügyfélszámítógépek alapértelmezett PowerShell-végrehajtási házirendjét?What does the default PowerShell execution policy on Windows client computers prevent from occurring?
  5. Hogyan változtathatja meg a PowerShell végrehajtási házirendjét?How do you change the PowerShell execution policy?

Azok számára, akik többet szeretnének megtudni az ebben a fejezetben tárgyalt témakörökről, a következő PowerShell-súgótémakörök olvasását javasoljuk.For those who want to know more information about the topics covered in this chapter, I recommend reading the following PowerShell help topics.

A következő fejezetben megismerheti a PowerShell parancsainak felfedezését.In the next chapter, you'll learn about the discoverability of commands in PowerShell. Az egyik dolog, ami a PowerShell frissítését ismerteti, így ezek a súgótémakörök közvetlenül a PowerShellen belül is megtekinthetők, ahelyett, hogy meg kellene tekinteni őket az interneten.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.