Mi az a Windows PowerShell, és mire használható? 1. rész: alapvető lehetőségek

Történelmileg a parancssori segédprogramok a Unix rendszerekben jobban fejlődtek, mint Windows alatt, de az új megoldások megjelenésével a helyzet megváltozott.

A Windows PowerShell lehetővé teszi a rendszergazdák számára, hogy automatizálják a legtöbb rutinfeladatot. Használatával megváltoztathatók a beállítások, leállíthatók és indíthatók a szolgáltatások, valamint karbantarthatók a legtöbb telepített alkalmazás. A kék ablakot nem lenne helyes még egy parancsértelmezőként felfogni. Ez a megközelítés nem tükrözi a Microsoft által kínált innováció lényegét. Valójában a Windows PowerShell lehetőségei sokkal szélesebb körűek: egy rövid ciklusban cikkek formájában megpróbáljuk megérteni, miben különbözik a Microsoft megoldása a számunkra hagyományosabb eszközöktől.

Mi az a Windows PowerShell, és mire használható? 1. rész: alapvető lehetőségek

Főbb lehetőségek 

Természetesen a Windows PowerShell elsősorban egy parancssori felület, amely scripts nyelvvel rendelkezik, és kezdetben a .NET Framework platformon készült, később pedig a .NET Core-ra alapozva. A szöveges adatokat fogadó és visszaadó shell-ekkel ellentétben a Windows PowerShell a .NET osztályokkal dolgozik, amelyeknek tulajdonságai és metódusai vannak. A PowerShell lehetővé teszi a normál parancsok végrehajtását, és hozzáférést biztosít a COM, WMI és ADSI objektumokhoz. Különféle tárolókat használ, mint például a fájlrendszer vagy a Windows rendszerleírója, amelyekhez úgynevezett szolgáltatók (providers) készültek. Érdemes megjegyezni, hogy a PowerShell végrehajtható komponensek beágyazása más alkalmazásokba lehetőséget biztosít különböző műveletek végrehajtására, például grafikus felhasználói felületen keresztül. Hasonlóképpen, sok Windows alkalmazás a PowerShell-en keresztül biztosítja a vezérlőfelületeikhez való hozzáférést. 

A Windows PowerShell lehetővé teszi:

  • A operációs rendszer beállításainak megváltoztatását;
  • Szolgáltatások és folyamatok kezelését;
  • A szerver szerepeinek és összetevőinek beállítását;
  • Szoftver telepítését;
  • A telepített szoftverek kezelését speciális felületeken keresztül;
  • Futtatható komponensek integrálását harmadik féltől származó programokba;
  • Automatizálási feladatokhoz szkriptek létrehozását;
  • Dolgozni a fájlrendszerrel, a Windows rendszerleírójával, a tanúsítványtárolóval stb.

A shell és fejlesztői környezet

A Windows PowerShell létezése két formában van: a parancssori környezet emulátora mellett egy integrált szkriptnyozó környezet (Integrated Scripting Environment – ISE) is elérhető. A parancssori felülethez elég, ha kiválasztja a megfelelő parancsikont a Windows menüben, vagy elindítja a powershell.exe fájlt a „Futtatás” menüből. A képernyőn megjelenik egy kék ablak, amely lehetőségeiben jelentősen eltér az elavult cmd.exe-től. Itt van autocompletion és más trükkök, amelyek a Unix-alapú parancssori környezetek felhasználóinak ismerősek.

Mi az a Windows PowerShell, és mire használható? 1. rész: alapvető lehetőségek

A shell használatához meg kell jegyezni néhány billentyűkombinációt:

  • A fel- és lefelé mutató nyilak a korábban beírt parancsok ismétlésére szolgálnak;
  • A jobb nyíl a sor végén a korábbi parancsot karakterről karakterre ismétli;
  • Ctrl+Home törli a beírt szöveget a kurzor pozíciójától a sor elejéig;
  • Ctrl+End törli a szöveget a kurzortól a sor végéig.

Az F7 megjeleníti a korábban beírt parancsokat tartalmazó ablakot, és lehetőséget ad egy közülük választani. A konzolon a szöveg egérrel történő kijelölése, másolás-beillesztés, a kurzor pozicionálása, törlés és backspace is működik – mind úgy, ahogy szeretjük.

Mi az a Windows PowerShell, és mire használható? 1. rész: alapvető lehetőségek
A Windows PowerShell ISE egy teljes értékű fejlesztői környezet, amely támogatja a füles nézetet és a szintaxis kiemelést, kódszerkesztőt, parancsépítőt, beépített hibakeresőt és más programozói örömöket kínál. Ha a fejlesztői környezet szerkesztőjében a parancs neve után egy kötőjelet ír, akkor megkapja a legördülő listában az összes elérhető paramétert az típussal együtt. A PowerShell ISE elindítható akár a rendszer menüjéből származó parancsikonon, akár a powershell_ise.exe futtatható fájllal.

Mi az a Windows PowerShell, és mire használható? 1. rész: alapvető lehetőségek

Parancslettek 

A Windows PowerShell-ben megjelentek az ún. parancsletek (cmdlet). Ezek speciális .NET osztályok, amelyekben különféle funkciók vannak rejtve. A nevük a "Cselekvés-Objektum" (vagy "Ige-Főnév", ha Önnek ez tetszik) elvén alapul, és az kötőjellel elválasztott összekötő szerkezet a természetes nyelvekben a mondatok alanyának és állítmányának megfelelője. Például a Get-Help szó szerint "Kapni-Segítséget" jelent, vagy a PowerShell kontextusában: "Mutasson-Meg-Hátteret". Ez lényegében az analógiája a man parancsnak Unix-rendszerekben, és a PowerShell dokumentációkat így kell kérni, nem pedig parancslettek előhívásával a --help vagy \/? kulccsal. Ne feledkezzen meg arról sem, hogy a PowerShell online dokumentációja a Microsofttól meglehetősen részletes.

A Get-hez hasonlóan a parancsokban más igék (és nemcsak igék) is használatosak. Az alábbiakban bemutatunk néhány példát:

Ezután adja meg az Amazon S3-hoz való hozzáféréshez szükséges fiókot — válassza ki a meglévőt a listából, vagy kattintson — hozzáadni;
Tisztít — tisztítani;
Engedélyez — bekapcsolni;
Letilt — letiltani;
Új — létrehozni;
Eltávolít — eltávolítani;
Beállít — beállítani;
osztályának — elindítani;
Megállít — megállítani;
Export — exportálni;
Importálás — importálni.

Vannak rendszer-, felhasználói és opcionális parancsok: a végrehajtás eredményeként mindegyik visszaad egy objektumot vagy objektumok tömbjét. Az érzékeny a kis- és nagybetűkre, tehát a parancsértelmező szempontjából nincs különbség a Get-Help és a get-help között. A parancsok elválasztásához a ‘;’ karaktert használjuk, de csak abban az esetben szükséges, ha egy sorban több parancs kerül végrehajtásra. 

A Windows PowerShell parancsok modulokba (NetTCPIP, Hyper-V stb.) vannak csoportosítva, és a Get-Command parancs segítségével lehet rákeresni egy objektumra és egy műveletre. A segítségét így lehet megjeleníteni:

Get-Help Get-Command

Mi az a Windows PowerShell, és mire használható? 1. rész: alapvető lehetőségek

Alapértelmezés szerint a parancs rövid segítséget mutat, de a parancsokhoz paramétereket (argumentumokat) is meg lehet adni. Ezek segítségével például részletes (a -Detailed paraméter) vagy teljes (a -Full paraméter) segítséget lehet kapni, és példákat is meg lehet jeleníteni (a -Examples paraméter):

Get-Help Get-Command -Examples

A Windows PowerShell segítsége az Update-Help parancs segítségével frissül. Ha a parancssor túl hosszú, a parancsargumentumok a következő sorra helyezhetők, ha beírjuk a „`” szimbólumot, majd megnyomjuk az Entert — csak az egy sorban történő írás befejezése és a következő sorra való folytatás nem lehetséges.

Az alábbiakban bemutatunk néhány elterjedt parancsot: 

Get-Process — megjeleníti a rendszerben futó folyamatokat;
Get-Service — megjeleníti a szolgáltatásokat és azok állapotát;
Get-Content — kiírja a fájl tartalmát.

A Windows PowerShell-ben a gyakran használt parancsoknak és külső eszközöknek rövid szinonimái vannak — aliasok. Például a dir — alias a Get-ChildItem-hoz. A szinonimák listájában találhatóak a Unix rendszerek parancsainak megfelelői is (ls, ps stb.), a Get-Help parancs pedig a help parancs hívásával érhető el. A szinonimák teljes listáját a Get-Alias parancs segítségével lehet megnézni:

Mi az a Windows PowerShell, és mire használható? 1. rész: alapvető lehetőségek

A szkriptek, függvények, modulok és a PowerShell nyelv

A Windows PowerShell szkriptek sima szövegfájlok formájában vannak tárolva .ps1 kiterjesztéssel. Őket nem lehet dupla kattintással elindítani: a jobb egérgombbal kell megnyitni a helyi menüt, és választani a „Futtatás PowerShell-ben” opciót. A konzolban vagy meg kell adni a szkript teljes útvonalát, vagy át kell lépni a megfelelő könyvtárba, és be kell írni a fájl nevét. A szkriptek futtatása a rendszerpolitikával is korlátozott, a jelenlegi beállítások ellenőrzéséhez pedig a Get-ExecutionPolicy parancsmagot lehet használni, amely az alábbi értékek egyikét adja vissza:

Korlátozott — a szkriptek futtatása tilos (alapértelmezetten);
Minden aláírt — csak a megbízható fejlesztő által aláírt szkriptek futtatása engedélyezett;
Távollét alatt aláírt — aláírt és saját szkriptek futtatása engedélyezett;
Korlátozások nélküli — bármilyen szkript futtatása engedélyezett.

Az adminisztrátornak két lehetősége van. A legbiztonságosabb opció a szkriptek aláírása, de ez igencsak bonyolult feladat — ezzel a következő cikkekben fogunk foglalkozni. Jelenleg a legkisebb ellenállás útján haladunk, és megváltoztatjuk a politikát:

Set-ExecutionPolicy RemoteSigned

Mi az a Windows PowerShell, és mire használható? 1. rész: alapvető lehetőségek
Ehhez a PowerShellt rendszergazdaként kell elindítani, habár speciális paraméterrel a jelenlegi felhasználó politikája is megváltoztatható.

A szkriptek objektumorientált programozási nyelven íródnak, amelynek parancsai ugyanazon elv szerint neveződnek, mint a korábban tárgyalt parancsmagok: „Cselekvés-Objektum” („Ige-Főnév”). Fő célja az adminisztrációs feladatok automatizálása, de egy teljes értékű értelmezett nyelv, amelyben minden szükséges szerkezet megtalálható: feltételes elágazások, ciklusok, változók, tömbök, objektumok, hibakezelés stb. Bármely szövegszerkesztő alkalmas a szkriptek írására, de a legkényelmesebb a Windows PowerShell ISE elindítása.

A szkriptbe paramétereket lehet átadni, kötelezővé lehet őket tenni, és alapértelmezett értékeket lehet beállítani. Ráadásul a Windows PowerShell lehetővé teszi funkciók létrehozását és azok hívását pontosan úgy, mint a parancsmagoknál: ehhez a Function konstrukciót és a kapcsos zárójeleket használjuk. A funkciókkal rendelkező szkriptet modulnak hívjuk, és .psm1 kiterjesztése van. A moduloknak a PowerShell környezeti változóiban meghatározott könyvtárakban kell tárolódniuk. Ezeket a következő parancs segítségével tekinthetjük meg:

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

Szűrők

Az előző példában a Unix rendszerek felhasználói számára ismerős felépítést alkalmaztunk. A Windows PowerShell-ben a függőleges vonal szintén lehetővé teszi, hogy egy parancs kimenetét egy másik parancsnak átadjuk, de a csővezeték megvalósításában lényeges eltérés van: itt már nem karakterek halmazáról vagy valamilyen szövegről van szó. A beépített parancsmódszerek vagy a felhasználói funkciók objektumokat vagy objektumok tömbjeit adnak vissza, és ezeket be is fogadhatják. A Bourne shellhez és számos követőjéhez hasonlóan a PowerShell-ben a csővezetékkel leegyszerűsödik a bonyolult feladatok végrehajtása.

A csővezeték legegyszerűbb példája így néz ki:

Get-Service | Sort-Object -property Status

Mi az a Windows PowerShell, és mire használható? 1. rész: alapvető lehetőségek
Először a Get-Service parancsmódszer hajtódik végre, majd minden megszerzett szolgáltatás átkerül a Sort-Object parancsmódszerbe, ahol a Status tulajdonság szerint rendezik őket. Hogy a csővezeték előző szakaszának kimenete pontosan melyik argumentumba kerül átadásra, az a típustól függ — általában ez az InputObject. A kérdést részletesebben a PowerShell programozási nyelvvel foglalkozó cikkben tárgyaljuk. 

Szükség esetén a láncot folytathatjuk, és a Sort-Object munkafolyamatának kimenetét egy másik parancsmódszerhez is átadhatjuk (az utasítások balról jobbra fognak végrehajtódni). Bocsánatot kérek, a Windows felhasználói számára rendelkezésre áll az ismerős Unix-stílusú lapozás is: 

Get-Service | Sort-Object -property Status | more

Feladatok futtatása háttérben 

Gyakran szükséges egy parancs háttérben történő futtatása, hogy ne kelljen megvárni annak végrehajtását a shell munkamenetében. A Windows PowerShell-ben több parancsmódszer is rendelkezésre áll ilyen esetekre:

Start-Job — háttérfeladat indítása;
Stop-Job — háttérfeladat leállítása;
Get-Job — háttérfeladatok listájának megtekintése;
Receive-Job — a háttérfeladat végrehajtásának eredményeinek megtekintése;
Remove-Job — háttérfeladat eltávolítása;
Wait-Job — háttérfeladat visszakerülése a konzolra.

Háttérfeladat indításához a Start-Job parancsmódszert használjuk, és a kapcsos zárójelek között megadjuk a parancsot vagy parancsok halmazát:

Start-Job {Get-Service}

Mi az a Windows PowerShell, és mire használható? 1. rész: alapvető lehetőségek
A Windows PowerShell-ben háttérfeladatokat a nevük ismeretében kezelhetünk. Először tanuljuk meg őket listázni:

Get-Job

Mi az a Windows PowerShell, és mire használható? 1. rész: alapvető lehetőségek
Most bemutatjuk az Job1 feladat eredményét:

Receive-Job Job1 | more

Mi az a Windows PowerShell, és mire használható? 1. rész: alapvető lehetőségek
Minden elég egyszerű.

Távoli parancsok végrehajtása

A Windows PowerShell lehetővé teszi parancsok és szkriptek futtatását nemcsak helyi, hanem távoli számítógépeken és akár egész gépcsoportokon is. Ehhez több módszer is létezik:

  • Sok parancsi modul rendelkezik a -ComputerNameparaméterrel, de ezzel a módszerrel például nem lehet csővezetéket létrehozni;
  • A parancsi modul Enter-PSSession interaktív munkamenetet hoz létre a távoli gépen; 
  • A parancsi modullal Invoke-Command parancsokat vagy szkripteket lehet futtatni egy vagy több távoli számítógépen.

A PowerShell verziói

Az első kiadás óta 2006-ban a PowerShell jelentősen megváltozott. Az eszköz számos rendszeren elérhető, amelyek különböző hardverplatformokon futnak (x86, x86-64, Itanium, ARM): Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux és OS X. A legutolsó, 6.2-es verziót 2018. január 10-én adták ki. A korábbi verziókhoz készült szkriptek nagy valószínűséggel működni fognak az újabb verziókban, ám a visszafelé kompatibilitás problémákba ütközhet, mivel az évek során a PowerShell-ben számos új parancsi modul jelent meg. Az aktuálisan telepített parancssor verzióját a PSVersion tulajdonság segítségével tudhatjuk meg a beépített $PSVersionTable változóból:

$PSVersionTable.PSVersion

Mi az a Windows PowerShell, és mire használható? 1. rész: alapvető lehetőségek
Ezen kívül a következő parancsi modullal is ellenőrizhetjük:

Get-Variable -Name PSVersionTable –ValueOnly

Mi az a Windows PowerShell, és mire használható? 1. rész: alapvető lehetőségek
Ugyanezt a Get-Host parancsi modullal is megtehetjük. Valójában számos lehetőség létezik, de ezek alkalmazásához meg kell tanulni a PowerShell programozási nyelvet, amivel a következő cikkünkben fogunk foglalkozni.. 

Összegzés 

A Microsoftnak sikerült valóban erőteljes parancssort létrehoznia egy kényelmes, integrált környezettel a szkriptek fejlesztéséhez. A Unix világában megszokott eszközöktől eltérően mély integrációval rendelkezik a Windows operációs rendszerekkel és azok szoftvereivel, valamint a .NET Core platformmal. A PowerShell-t objektumorientált környezetnek tekinthetjük, mivel a parancsi modulok és a felhasználói funkciók objektumokat vagy objektummátrixokat adnak vissza, és ezek fogadhatók be bemeneti paraméterként. Úgy gondoljuk, hogy ezt az eszközt minden Windows szerveradminisztrátornak ismernie kell: elmúltak azok az idők, amikor meg lehetett elégedni parancssor nélkül. A fejlettebb konzolos környezet különösen szükséges a megfizethető VPS-einken, amelyek Windows Server Core-ral működnek., de ez már egy teljesen másik történet.

Mi az a Windows PowerShell, és mire használható? 1. rész: alapvető lehetőségek

Csak a regisztrált felhasználók vehetnek részt a szavazáson. Kérem, jelentkezzen be., kérem.

Milyen témákat érdemes elsőként érinteni a következő cikksorozatban?

  • 53,2%Programozás PowerShell-ben

  • 42,4%PowerShell funkciók és modulok

  • 22,1%Hogyan írhatjuk alá saját szkripteinket?

  • 12,1%Munkavégzés tárolókkal szolgáltatókon keresztül

  • 57,6%Számítógépek adminisztrálásának automatizálása PowerShell-lel

  • 30,7%Szoftverek kezelése és PowerShell végrehajtható összetevőinek integrálása harmadik fél termékeibe

231 felhasználó szavazott. 37 felhasználó tartózkodott.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster