1. fejezet – A PowerShell használatának első lépései
Ez a fejezet a PowerShell megkeresésére és elindítására, valamint az új felhasználók által a PowerShell használatával tapasztalt kezdeti fájdalompontok megoldására összpontosít. Kövesse végig az ebben a fejezetben található példákat a tesztkörnyezet számítógépén.
Mi az a PowerShell?
A Windows PowerShell egy könnyen használható parancssori rendszerhéj és szkriptelési környezet a Windows-alapú rendszerek felügyeleti feladatainak automatizálásához. A Windows PowerShell előre telepítve van a Windows operációs rendszer minden modern verziójára.
A PowerShell megkeresésének helye
A PowerShell windows 11 rendszeren való megkeresésének legegyszerűbb módja, ha beírja PowerShell
a keresősávba az 1–1. ábrán látható módon. Figyelje meg, hogy a Windows PowerShellhez négy különböző parancsikon használható.
Windows PowerShell-parancsikonok a Windows 64 bites verzióján:
- Windows PowerShell
- Windows PowerShell integrált parancsprogram-kezelési környezet (ISE)
- Windows PowerShell (x86)
- Windows PowerShell ISE (x86)
A Windows 64 bites verziójában a Windows PowerShell-konzol és a Windows PowerShell integrált szkriptelési környezet (ISE) 64 bites verziója és mindegyik 32 bites verziója található, amint azt a billentyűparancsokon található (x86) utótag jelzi.
Feljegyzés
A Windows 11 csak 64 bites operációs rendszerként üzemel. A Windows 11-nek nincs 32 bites verziója. A Windows 11 azonban a Windows PowerShell és a Windows PowerShell ISE 32 bites verzióit tartalmazza.
Csak két billentyűparancsot használhat, ha a Windows régebbi, 32 bites verzióját futtatja. Ezek a billentyűparancsok nem rendelkeznek az (x86) utótagokkal, de 32 bites verziók.
A Windows PowerShell 64 bites verzióját javaslom, ha 64 bites operációs rendszert futtat, hacsak nincs konkrét oka a 32 bites verzió használatára.
Attól függően, hogy a Windows 11 melyik verzióját futtatja, előfordulhat, hogy a Windows PowerShell megnyílik a Windows Terminálban.
A Microsoft már nem frissíti a PowerShell ISE-t. Az ISE csak a Windows PowerShell 5.1-zel működik. A PowerShell-bővítményt tartalmazó Visual Studio Code (VS Code) a PowerShell mindkét verziójával működik. A VS Code és a PowerShell-bővítmény nem windowsos. Telepítse a VS Code-ot és a bővítményt arra a számítógépre, amelyen PowerShell-szkripteket hoz létre. Nem kell telepítenie őket az összes olyan számítógépre, amelyen a PowerShellt futtatja.
A PowerShell indítása
Három különböző Active Directory-felhasználói fiókot használok az általam támogatott éles környezetekben. Tükröztem azokat a fiókokat a laborkörnyezetben, amit ebben a könyvben használtak. Tartomány- vagy helyi rendszergazdai jogosultságok nélkül jelentkezem be a Windows 11 rendszerű számítógépemre tartományi felhasználóként.
Indítsa el a PowerShell-konzolt az 1–1. ábrán látható Windows PowerShell-parancsikonra kattintva. Figyelje meg, hogy a konzol címsorában a Windows PowerShell látható, ahogy az 1–2. ábrán látható.
Egyes parancsok jól futnak, ha a PowerShellt egyszerű felhasználóként futtatja. A PowerShell azonban nem vesz részt a felhasználói hozzáférés-vezérlésben (UAC). Ez azt jelenti, hogy nem tud jogosultságszint-emelést kérni olyan feladatokhoz, amelyekhez rendszergazdai jóváhagyás szükséges.
Feljegyzés
Az UAC egy Windows biztonsági funkció, amely segít megakadályozni, hogy a rosszindulatú kódok emelt szintű jogosultságokkal fussanak.
Amikor normál felhasználóként jelentkezik be, a PowerShell hibát ad vissza, amikor egy jogosultságszint-emelést igénylő parancsot futtat. Például egy Windows-szolgáltatás leállítása:
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
A megoldás a PowerShell rendszergazdai szintű futtatása helyi rendszergazdaként. Így konfiguráltam a második tartományi felhasználói fiókomat. A minimális jogosultság elvét követve ez a fiók nem lehet tartományi rendszergazda, és nem rendelkezhet emelt szintű jogosultságokkal a tartományban.
Ha emelt szintű jogosultságokkal szeretné elindítani a PowerShellt, kattintson a jobb gombbal a Windows PowerShell parancsikonra , és válassza a Futtatás rendszergazdaként lehetőséget az 1–3. ábrán látható módon.
A Windows azért kéri a hitelesítő adatokat, mert normál felhasználóként jelentkezett be a Windowsba. Adja meg a helyi rendszergazdaként dolgozó tartományfelhasználó hitelesítő adatait az 1–4. ábrán látható módon.
Figyelje meg, hogy az emelt szintű konzolablakok címsorában a Rendszergazda: Windows PowerShell látható, ahogy az 1–5. ábrán látható.
Most, hogy rendszergazdaként rendszergazdaként futtatja a PowerShellt, az UAC már nem jelent problémát, ha emelt szintű parancsot futtat.
Fontos
A PowerShellt csak rendszergazdaként kell futtatnia, ha feltétlenül szükséges.
Ha távoli számítógépeket céloz meg, nincs szükség a PowerShell emelt szintű futtatására. A PowerShell emelt szintű futtatása csak a helyi számítógépen futó parancsokat érinti.
Egyszerűbbé teheti a PowerShell megkeresését és elindítását. Rögzítse a PowerShell vagy a Windows Terminál billentyűparancsát a tálcán. Keresse meg újra a PowerShellt, kivéve, ha ezúttal a jobb gombbal rá kattint, és az 1–6. ábrán látható módon válassza a Rögzítés a tálcán lehetőséget.
Fontos
A könyv 2017-ben megjelent eredeti verziója azt javasolta, hogy rögzítsen egy parancsikont a tálcára, hogy a PowerShell minden indításakor automatikusan elindítson egy emelt szintű példányt. A lehetséges biztonsági problémák miatt azonban már nem ajánlom. A PowerShell emelt szintű példányából indított alkalmazások az UAC-t is megkerülik, és emelt szintű futtatást is futtatnak. Ha például elindít egy webböngészőt a PowerShell emelt szintű példányából, a rosszindulatú kódot tartalmazó webhelyek is emelt szintűek lesznek.
Ha emelt szintű engedélyekkel kell futtatnia a PowerShellt, kattintson a jobb gombbal a tálcára rögzített PowerShell-parancsikonra a Shift billentyű lenyomása közben. Válassza a Futtatás rendszergazdaként lehetőséget az 1–7. ábrán látható módon.
A PowerShell verziójának meghatározása
A PowerShellben vannak olyan automatikus változók, amelyek állapotinformációkat tárolnak. Ezen változók egyike, $PSVersionTable
amely a PowerShell-munkamenet verzióadatait tartalmazza.
$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
Ha a Windows PowerShell 5.1-nél régebbi verzióját futtatja, frissítenie kell a Windows verzióját. A Windows PowerShell 5.1 előre telepítve van a Windows jelenleg támogatott verzióiban.
A PowerShell 7-es verziója nem helyettesíti a Windows PowerShell 5.1-et; párhuzamosan telepíti a Windows PowerShellt. A Windows PowerShell 5.1-es és 7-es verziója két különböző termék. A Windows PowerShell 5.1 és a PowerShell 7-es verziója közötti különbségekről további információt a Windows PowerShell 5.1-ről a PowerShell 7-re való migrálás című témakörben talál.
Tipp.
A PowerShell 6-os verziója, korábbi nevén PowerShell Core már nem támogatott.
Végrehajtási irányelv
A PowerShell végrehajtási szabályzata szabályozza a PowerShell-szkriptek futtatásának feltételeit. A PowerShell végrehajtási szabályzata egy biztonsági funkció, amely segít megelőzni a rosszindulatú szkriptek véletlen végrehajtását. Ez azonban nem biztonsági határ, mert nem tudja megakadályozni, hogy a felhasználók szándékosan futtassanak szkripteket. Egy meghatározott felhasználó megkerülheti a Végrehajtási szabályzatot a PowerShellben.
Beállíthat végrehajtási szabályzatot a helyi számítógéphez, az aktuális felhasználóhoz vagy egy PowerShell-munkamenethez. A csoportházirenddel a felhasználók és számítógépek végrehajtási házirendjei is beállíthatók.
Az alábbi táblázat az aktuális Windows operációs rendszerek alapértelmezett végrehajtási szabályzatát mutatja be.
Windows operációs rendszer verziója | Alapértelmezett végrehajtási szabályzat |
---|---|
Windows Server 2022 | Távoli aláírás |
Windows Server 2019 | Távoli aláírás |
Windows Server 2016 | Távoli aláírás |
Windows 11 | Korlátozott hozzáférésű |
Windows 10 | Korlátozott hozzáférésű |
A végrehajtási szabályzat beállításától függetlenül bármely PowerShell-parancsot interaktívan futtathat. A végrehajtási szabályzat csak a parancsfájlokban futó parancsokat érinti. Get-ExecutionPolicy
A parancsmaggal állapítsa meg az aktuális végrehajtási házirend-beállítást.
Ellenőrizze a végrehajtási szabályzat beállításait a számítógépen.
Get-ExecutionPolicy
Restricted
Az összes hatókör végrehajtási házirend-beállításainak listázása.
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
Minden Windows-ügyfél operációs rendszer rendelkezik az alapértelmezett végrehajtási házirend-beállítással Restricted
. PowerShell-szkriptek nem futtathatók a Restricted
végrehajtási szabályzat beállításával. A végrehajtási szabályzat teszteléséhez mentse a következő kódot egy .ps1
nevű Get-TimeService.ps1
fájlként.
Tipp.
A PowerShell-szkriptek egyszerű szöveges fájlok, amelyek a futtatni kívánt parancsokat tartalmazzák. A PowerShell-szkriptfájlok a fájlkiterjesztést .ps1
használják. PowerShell-szkript létrehozásához használjon olyan kódszerkesztőt, mint a Visual Studio Code (VS Code) vagy bármely szövegszerkesztő, például a Jegyzettömb.
Ha interaktívan futtatja a következő parancsot, az hiba nélkül befejeződik.
Get-Service -Name W32Time
A PowerShell azonban hibát ad vissza, ha ugyanazt a parancsot futtatja egy szkriptből.
.\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
Ha egy hibát generáló parancsot futtat a PowerShellben, olvassa el a hibaüzenetet, mielőtt újrapróbálkozna. Figyelje meg, hogy a hibaüzenet jelzi, miért nem sikerült a parancs:
... a szkriptek futtatása le van tiltva ezen a rendszeren.
A szkriptek végrehajtásának engedélyezéséhez módosítsa a végrehajtási szabályzatot a Set-ExecutionPolicy
parancsmaggal. LocalMachine
az alapértelmezett hatókör, ha nem adja meg a Hatókör paramétert. Rendszergazdaként rendszergazdaként kell futtatnia a PowerShellt a helyi gép végrehajtási szabályzatának módosításához.
Hacsak nem írja alá a szkripteket, azt javaslom, hogy használja a RemoteSigned
végrehajtási szabályzatot.
RemoteSigned
megakadályozza a megbízható közzétevő által nem aláírt letöltött szkriptek futtatását.
A végrehajtási szabályzat módosítása előtt olvassa el a about_Execution_Policies súgócikket a biztonsági következmények megértéséhez.
Módosítsa a számítógépen a végrehajtási szabályzat beállítását a következőre RemoteSigned
: .
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Ha sikeresen módosította a végrehajtási szabályzatot, a PowerShell a következő figyelmeztetést jeleníti meg:
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
Ha nem rendszergazdaként futtatja a PowerShellt, a PowerShell a következő hibaüzenetet adja vissza:
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
Az aktuális felhasználó végrehajtási házirendjét is módosíthatja anélkül, hogy rendszergazdaként rendszergazdaként kellene futtatnia a PowerShellt. Ez a lépés szükségtelen, ha sikeresen beállította a helyi gép RemoteSigned
végrehajtási szabályzatát.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
A végrehajtási szabályzat beállítása RemoteSigned
esetén a Get-TimeService.ps1
szkript sikeresen lefut.
.\Get-TimeService.ps1
Status Name DisplayName
------ ---- -----------
Running W32Time Windows Time
Összegzés
Ebben a fejezetben megtanulta, hogy hol találhatja meg és hogyan indíthatja el a PowerShellt. Azt is megtanulta, hogyan határozhatja meg a PowerShell verzióját és a végrehajtási szabályzatok célját.
Áttekintés
- Hogyan állapítható meg, hogy melyik PowerShell-verzió fut a számítógépen?
- Mikor érdemes rendszergazdaként rendszergazdaként elindítani a PowerShellt?
- Mi az alapértelmezett végrehajtási szabályzat a Windows ügyfélszámítógépeken, és mit akadályoz meg a művelet?
- Hogyan határozhatja meg a PowerShell aktuális végrehajtási házirend-beállítását?
- Hogyan módosíthatja a PowerShell végrehajtási szabályzatát?
Hivatkozások
Az ebben a fejezetben tárgyalt fogalmakkal kapcsolatos további információkért olvassa el az alábbi PowerShell-súgócikkeket.
Következő lépések
A következő fejezetben megismerheti a Parancsok felderíthetőségét a PowerShellben. Azt is megtudhatja, hogyan töltheti le a PowerShell súgófájljait, hogy a PowerShell-munkamenetben megtekinthesse a súgót.