A PowerShell a Microsoft által fejlesztett, parancssori héjból és a megfelelő programozási nyelvből álló feladatautomatizáló és konfigurációkezelő program. Korábban csak a Windows része volt Windows PowerShell néven, 2016. augusztus 18-án a Microsoft megnyitotta a forráskódját és több platformra elérhetővé tette a PowerShell Core bevezetésével.[3] Előbbi a .NET keretrendszeren alapul, utóbbi a .NET-en (korábban .NET Core).
A Windows 10 build 14971-től a PowerShell felváltotta a parancssort, és alapértelmezett parancsbeviteli alkalmazássá vált a Fájlkezelőben.[4][5]
A PowerShellben a kezelési feladatokat általában cmdletek végzik, melyek egy adott műveletet elvégző speciális .NET osztályok. Ezek különböző adattárakban lévő adatok elérésével működnek, és szolgáltatók teszik elérhetővé. Harmadik felek is hozzáadhatnak cmdleteket és szolgáltatókat a PowerShellhez.[6] A cmdleteket használhatják szkriptek, melyek modulokba csomagolhatók. A cmdletek a .NET API-val működnek együtt.
A PowerShell .NET Remoting-, WS-Management-, CIM- és SSH-támogatása lehetővé teszi a rendszergazdáknak a helyi és távoli rendszereken való munkavégzést. A PowerShell host-API-val is rendelkezik, így beágyazható más alkalmazásokba. Ez felhasználható bizonyos, akár grafikus felhasználói felület által látható műveletekhez is. Ezt használta a Microsoft Exchange Server 2007 kezelési funkcióinak PowerShell-cmdletekkel és -szolgáltatókkal, kezelőeszközeinek a szükséges cmdleteket meghívó PowerShell-hostokkal való megvalósításával.[7] Más Microsoft-alkalmazások, például a Microsoft SQL Server 2008 is cmdleteket használ a felületén.[8]
A PowerShell része saját konzolalapú segítsége (a Unix-héjak man-oldalaihoz hasonlóan), melyet a Get-Help cmdlettel lehet felhasználni. Frissülő segítségeket az Update-Help cmdlet révén lehet az internetről szerezni. Ezenkívül a Get-Help „-online” váltójával lehet frissülő segítséget egyes esetekre kapni.
Háttér
A parancssorelemző (CLI) a Microsoft legtöbb operációs rendszerének része volt. Az MS-DOS és a Xenix szinte teljesen CLI-n alapultak (az MS-DOS 5 kiegészítő grafikus DOS héjjal is rendelkezett). A Windows 9x család a COMMAND.COM-mal, a DOS parancssoros környezetével rendelkezett. A Windows NT és Windows CE családok a COMMAND.COM-hoz nagyban hasonlító cmd.exe-vel rendelkeztek. Mindkét környezet támogat alapvető belső parancsokat és egy egyszerű programozási nyelvet (kötegfájlok), mely bizonyos feladatok automatizálására használható. Azonban nem képes a Windows GUI minden részének automatizálására, mivel a parancssori műveletek korlátozottak, és a nyelv alapszintű.
A Microsoft megkísérelte e hibák javítását a Windows Script Host és annak parancssoros hosztjának (cscript.exe) bevezetésével 1998-ban a Windows 98-ban. Az Active Script motorral integráltan jelent meg, és lehetővé tette szkriptek kompatibilis nyelveken, például JScriptben és VBScriptben való írását, befolyásolja a komponensobjektum-modell (COM) által mutatott API-t. Azonban hiányosságai is voltak: dokumentációja nehezen érhető el, és hamar hírhedtté vált sérülékenységei miatt, miután néhány nagy károkat okozó vírus kihasználta biztonsági hiányosságait. A különböző Windows-verziók speciális célú interpretereket is biztosítottak (például netsh-t vagy WMIC-et) saját parancskészlettel, de ezek nem voltak egymással kompatibilisek. A Windows Server 2003 próbált ezen javítani, de a szkripttámogatás nem volt kielégítő.[9]
Kermit
Az 1990-es évek végére az Intel segítséget kért a Microsofttól a későbbi processzorokhoz megfelelő rendszer készítéséhez. Ekkor az Intel processzorok gyártását Sun Microsystems számítógépen végezték, melyek Solarist (egy Unix-változatot) használtak RISC architektúrájú CPU-n. A számos KornShell automatizációs program futtatása Windowson fontosnak bizonyult. A Microsoft elkezdett egy KornShell-portot készíteni Windowsra Kermit kódnéven.[10] Az Intel végül Linux-alapú fejlesztési platformra tért át, így a Kermit projekt fölös lett. Azonban a Microsoft programmenedzsere, Jeffrey Snover észrevette egy általánosabb célú megoldás lehetőségét az adminisztratív feladatok automatizálásáera.
Monad
2002-re a Microsoft új megközelítést fehlesztett ki a parancssorkezelésre, például a Monad (más néven Microsoft Shell (MSH)) CLI-t. Az ötletek 2002 augusztusában jelentek meg a „Monad Kiáltványnak” nevezett vázlatban.[11] Egy 2017-es interjúban Snover a PowerShell létrejöttéről beszélt, elmondta, hogy megpróbált Unix-eszközöket elérhetővé tenni Windowson, ami „a Windows és Linux alapvető különbségei” miatt nem sikerült. Például megjegyezte, hogy a Linux mindent szöveges fájlként kezel, míg a Windows mindent „strukturált adatot visszaadó API-ként”. Ezek így nem voltak kompatibilisek, más megközelítéshez vezetve.[12]
A Monad új bővíthető CLI lett volna új tervezéssel, és sok feladat automatizálásának képességével. A Microsoft először a Monadot 2003 októberében mutatta be a Los Angeles-i Professional Development Conference-en. Néhány hónappal később megjelent a belső, majd a nyilvános béta. Az első nyilvános Monad-béta 2005. június 17-én, a második szeptember 11-én, a harmadik 2006. január 10-én jelent meg.
PowerShell
2006. április 25-én, a Monad bejelentése után nem sokkal, a Microsoft bejelentette a Monad átnevezését Windows PowerShellre, azt kezelési technológia jelentős tagjaként elhelyezve.[13] Az első kiadásjelölt (RC1) is e napon jelent meg. A névváltoztatás és az RC is jelezte, hogy ez Windows-komponens volt, nem kiegészítő.
A PowerShell RC2K 2006. szeptember 26-án jelent meg, a webre való kiadás (RTW) november 14-én történt. A korábbi verziókra 2007. január 30-án lett kiadva.[14] A PowerShell 2.0 fejlesztése az 1.0 kiadása előtt kezdődött. Fejlesztése során 3 community technology preview (CTP) jelent meg. A kiadások nyilvánosan elérhetők lettek. Az utolsó CTP 2008 decemberében jelent meg.
A PowerShell 2.0 2009 augusztusában készült el és jelent meg a Windows 7 és a Windows Server 2008 R2 részeként. A PowerShell Windows XP, Windows Server 2003, Windows Vista és Windows Server 2008 rendszerekre 2009 októberében jelent meg 32 és 64 bites platformokra.[15] A TechNet 2009. októberi számában a Microsoft a PowerShell-ismereteket „a jövőben a Windows-rendszergazda által igényelt legfontosabb képességnek” nevezte.[16]
A Windows 10-ben a PowerShellhez tesztkeretrendszer jelent meg.[17]
2016. augusztus 18-án a Microsoft bejelentette, hogy a PowerShell nyílt forrású és platformfüggetlen lett[18] a Windows mellett macOS-, CentOS- és Ubuntu-támogatással. A forráskód elérhető lett a GitHubon.[19] A nyílt forrásra való áttérés miatt létrejött egy újabb változat, a .NET Core-t használó PowerShell Core. Ez eltér a teljes .NET-en futó PowerShelltől.[20] Az 5.1 verziótól a PowerShell Core a Windows Server 2016 Nano Server része.[21][22]
Tervezés
Fontos volt a tervezésben a Windows, a Windows Management Instrumentation, a .NET keretrendszer stb. sok API-jának használatának megkönnyítése. A cmdletek a létező funkciókat „csomagolják be”. Ennek célja rendszergazdabarát, egységes felület biztosítása a rendszergazda és sok funkció között. A PowerShell révén nem kell ismerni a .NET-et, a WMI-t vagy az API-kódolást, hanem csak a cmdleteket kell használni. A PowerShellben nincs sok új funkció, hanem a meglévő funkciók hozzáférhetőbbek egy bizonyos csoportnak.[23]
Nyelvtan
A PowerShell alapnyelvtana a POSIX 1003.2 KornShellen alapul.[24]
Azonban a PowerShell nyelvét befolyásolták a PHP, a Perl és sok más nyelv.[25]
Elnevezett parancsok
A PowerShell négyféle parancsot tud végrehajtani:[26]
cmdletek (PowerShell-lel működő .NET-programok)
PowerShell-szkriptek (.ps1 kiterjesztéssel)
PowerShell-függvények
Önálló végrehajtható programok
Az önálló végrehajtható programokat a PowerShell önálló folyamatban, a cmdleteket a PowerShell folyamatában hajtja végre. A PowerShell interaktív parancssoros felület, ahol a parancsok bevihetők, kimenetük megjeleníthető. A felület beállítható parancskiegészítéssel is rendelkezik. A PowerShell lehetővé teszi cmdletek álneveinek létrehozását, melyek esetén az átalakítja az eredeti parancsok meghívására. A PowerShell az elnevezett és számozott paramétereket is támogatja a parancsokhoz. Egy cmdlet végrehajtásában az argumentum értékének a paraméterrel való összekapcsolását a PowerShell végzi, de külső végrehajtható programok esetén az argumentumokat a külső program a PowerShelltől függetlenül értelmezi.[27]
Extended Type System
A PowerShell Extended Type System (ETS) a .NET típusrendszeren alapul kiterjesztett szemantikával (például propertySetek és harmadik fél általi bővíthetőség). Például lehetővé teszi objektumok különböző nézeteit csak az adatmezők, tulajdonságok és metódusok egy részének megjelenítésével, valanint egyéni rendezési viselkedés megadásával. Ezek az eredeti objektumhoz XML-alapú fájlokkal vannak rendelve.[28]
Cmdletek
A cmdletek a PowerShell környezet speciális parancsai adott funkciókhoz. Nevük Ige-Főnév alakú (például Get-ChildItem), így öndokumentáló.[29] A cmdletek objektumként adják ki eredményeiket, így megfelelő futószalag-recipiensek. Ha egy cmdlet több objektumot ad ki, mindegyik végighalad a futószalagon a következő objektum feldolgozása előtt.[29]
A cmdletek speciális .NET osztályok, melyeket a PowerShell futásidőben hoz hajt végre. Ezek a Cmdlet vagy a PSCmdlet osztályból származnak, utóbbi akkor használatos, ha a cmdletnek a PowerShell-lel kell kommunikálni.[29] Ezen osztályok bizonyos metódusokat (BeginProcessing(), ProcessRecord() és EndProcessing()) határoznak meg, melyeket a cmdlet megvalósítása a működés biztosításához felülír. Egy cmdlet futásakor a PowerShell ezeket sorban hívja meg, a ProcessRecord() hívása a futószalag-bemenet érkezésekor történik.[30] Ha a futószalagon objektumgyűjtemény van, a metódus minden objektumra meghívatik. A cmdletet megvalósító osztálynak szüksége van a CmdletAttribute attribútumra, mely a cmdlet nevét alkotó igét és főnevet határozza meg. A gyakori igék enumerált típusként vannak megadva.[31][32]
Ha egy cmdlet futószalag- vagy parancssorbemenetet kap, az osztályban kell megfelelő tulajdonság mutátormegvalósítással. A PowerShell ezt a paraméterrel vagy a futószalag-bemenettel hívja meg, melyet a mutátor az osztályokban elment. Ezen értékekre a funkciót biztosító metódusok hivatkoznak. A parancssori paraméterekre hivatkozó paramétereket a ParameterAttribute jelzi,[33] beállításuk a BeginProcessing-hívás előtt történik. A futószalag-bemenetre képező paramétereket is a ParameterAttribute jelzi, de a ValueFromPipeline attribútummal.[34]
E cmdletosztályok megvalósítása bármilyen .NET API-ra hivatkozhat, és jelen lehet bármilyen .NET nyelvben. Ezenkívül a PowerShell elérhetővé tesz bizonyos API-kat, például a WriteObjectet, mely PowerShell-specifikus funkciókhoz, például eredmények futószalagra való kiírásához. A cmdletek használhatnak .NET adathozzáférési API-kat közvetlenül vagy szolgáltatón keresztül, lehetővé téve a tárak címzését egyedi utakkal. Az adattárak a meghajtóbetűkkel, a bennük lévő hierarchiák a könyvtárakkal jelennek meg. A PowerShell a fájlrendszerhez, a rendszerleíráshoz, a tanúsítványtárhoz és a parancsnevekhez, változókhoz és függvényekhez tartozó névterekhez tartozó szolgáltatókkal jelent meg.[35]
A cmdletek száma a PowerShell alapváltozatában általában nőtt:
A héjba snapinekkel (a 2.0-tól elavult) és modulokkal is hozzáadhatók cmdletek.
Futószalag
A PowerShell a futószalag fogalmát használja, mely lehetővé teszi egy cmdlet kimenetének egy másik bemenetekénti használatát.
A Unix-futószalagokhoz hasonlóan a PowerShell futószalagjai összetett parancsokat is alkothatnak a | operátorral. Azonban a PowerShell futószalagjai eltérnek a Unixéitól abban, hogy a szakaszok a PowerShell futásidejében történnek, nem az operációs rendszer által összehangolt folyamatsorként. Továbbá strukturált .NET-objektumok átadása történik, nem adatfolyamoké. A PowerShellben az objektumok és a végrehajtási szakaszok használata miatt nem szükséges az adatszerkezetek szerializációja vagy kiadása a szöveges kimenet explicit értelmezésével.[40] Egy objektum felületet is létrehozhat bizonyos adatfeldolgozó függvényekre, melyek a fogadóparancsnál elérhetők.[41][42] Egy futószalag utolsó tagja esetén a PowerShell annak kimenetét automatikusan az Out-Default cmdletnek adja tovább, mely az objektumokat formátumobjektum-folyammá alakítja, és annak részeit jeleníti meg.[43][44]
Mivel a PowerShell-objektumok egyben .NET-objektumok, közös .ToString metódusuk van, mely az objektum adatait adja ki szövegesen. Ezenkívül a PowerShell lehetővé teszi formázási definíciók megadását, így az objektumok szöveges megjelenítésében kiválasztható, mely elemek hogyan jelenjenek meg. Azonban ha egy külső alkalmazás van egy futószalagban, az az objektumnak megfelelő szöveges folyamot kapja, nem közvetlenül integráltan a PowerShell típusrendszerével.[45][46][47]
Programok
A PowerShell dinamikusan típusos programnyelvvel rendelkezik, mely képes komplex műveletek imperatív végrehajtására cmdletekkel. A nyelv támogatja a változókat, a függvényeket, az elágazást (if-else), a ciklusokat (while, do, for, foreach), a strukturált hiba-kivételkezelést és a lezárásokat/lambda-kifejezéseket,[48] valamint a .NET-tel való integrációt. A PowerShell változónevei előtt $ jel van.
Az objektumelemek hozzáférhetők a C# nyelvhez hasonló . jelöléssel. A PowerShellben vannak speciális változók, például a $args, mely a függvénynek adott argumentumok tömbje, valamint a $_, mely a futószalag jelenlegi objektumát jelenti.[49] A PowerShell tömböket és asszociatív tömböket is ad. A PowerShell nyelv ezenkívül a bevitt műveleteket is végrehajtja, és értelmezi a gyakori rövidítéseket, például a GB-t, az MB-t és a KB-t.[50][51]
A function kulcsszóval a PowerShell lehetőséget ad függvénylétrehozásra. Egy egyszerű függvény így nézhet ki:[52]
A PowerShell lehetővé tesz haladó függvényeket elnevezett, helyzeti, váltó- és dinamikus paraméterekkel.[52]
functionVerb-Noun{param(# Definition of static parameters)dynamicparam{# Definition of dynamic parameters}begin{# Set of instruction to run at the start of the pipeline}process{# Main instruction sets, ran for each item in the pipeline}end{# Set of instruction to run at the end of the pipeline}}
A létrehozott függvény az alábbi formákban hajtható végre:[52]
A PowerShell lehetővé teszi statikus .NET-metódusok hívását névtereik szögletes zárójelekben ([]) való megadásával, majd 2 kettősponttal, mely a statikus metódust jelzi.[53] Például:
[Console]::WriteLine("PowerShell")
Számos módszer van az objektumok létrehozására PowerShellben. Létrehozásuk után a tulajdonságok és metódusok hozzáférhetők a . jelöléssel.[53]
A PowerShellben használhatók nyers (aposztrófok közt) és feloldott (idézőjelek közt) sztringek is. Az egyenes és a görbe változatot a PowerShell ugyanúgy kezeli.[54]
Az alábbi speciális karaktereket támogatja a PowerShell:[55]
A PowerShellben .NET-alapú kivételkezelés van. Hiba esetén a hibáról információt tartalmazó objektumok jelennek meg, melyeket a try … catch szerkezettel lehet kiadni (azonban van trap szerkezet is). A PowerShell beállítható csendes végrehajtás-folytatásra egy parancsra, egy munkamenetre vagy véglegesen.[56]
A PowerShell-lel írt szkriptek állandósíthatók .ps1 vagy (modul esetén) .psm1 fájlban. Ezután az egész szkript vagy annak bizonyos részei használhatók. A szkriptek és a függvények a cmdletekhez hasonlóan működnek, és megadhatók hozzájuk paraméterek. Futószalag-objektumok adhatók meg függvényekben, szkriptekben és cmdletekben. A szkriptek illetéktelen futtatásának elkerüléséért a szkriptvégrehajtás alapértelmezés szerint le van tiltva, és külön engedélyezni kell.[57] Ez lehet rendszer-, felhasználói vagy munkamenetszintű. A PowerShell-szkriptek aláírhatók integritásukhoz, és a Code Access Security alá vannak rendelve.[58]
A PowerShell támogatja a bináris prefixumot és a C család számos nyelvében jelen lévő normálalakot.[59]
Desired State Configuration
A DSC lehetővé teszi szoftveres környezet beállításának meghatározását.[60]
Konfiguráció futtatásakor a DSC biztosítja a rendszer leírásnak megfelelő állapotát. A DSC-konfigurációk idempotensek. A Local Configuration Manager (LCM) rendszeresen ellenőrzi a rendszert az erőforrások (imperatív DSC-elemek) által leírtaknak megfelelően a konfiguráció állapotának biztosítására.
Verziók
Eleinte Monad kódnéven a PowerShellt először a 2003. októberi Professional Developers Conference-en mutatták be Los Angelesben. Minden fő kiadás támogatott, és a korábbi változatokkal kompatibilis.
A PowerShell 2.0 a Windows 7-be és a Windows Server 2008 R2-be integrálva jelent meg,[62] és megjelent Windows XP SP3-ra, Windows Server 2003 SP2-re és Windows Vista SP1-re is.[63][64]
A PowerShell 2.0-ban változott a szkriptnyelv és az API, és több mint 240 új cmdlet jelent meg.[65][66]
A WS-Management révén a PowerShell 2.0 lehetővé teszi szkriptek és cmdletek távoli gépen, gépeken való végrehajtását.
A parancssorozatok (szkriptek) vagy csatornák aszinkronban is végrehajthatók helyben vagy távoli gépen. A PSJob interaktív cmdletei leállítják a végrehajtást felhasználói bemenet megadásáig.
Tranzakciós műveletek: PSTransaction kezdése, végrehajtása, visszavonása és ezek irányítása a résztvevő cmdlet és szolgáltató műveletei között.
Haladó függvények (eredeti néven szkript-cmdletek): PowerShellben írt cmdletek.[70]
A SteppablePipelines lehetővé teszi egy cmdlet BeginProcessing(), ProcessRecord() és EndProcessing() függvényei végrehajtásának időpontjának változtatását.
A modulok lehetővé teszik PowerShell-szkriptek önálló, újra felhasználható egységekbe helyezését. Kódjuk önálló kontextusban, a külső állapot változtatása nélkül fut. A modulok meghatározhatnak adott futásteret. Állandó állapotuk, nyilvános és privát tagjaik vannak.
Adatnyelv (szkriptnyelvállítás), lehetővé téve a lefordított sztringek futásidejű importálását.
Szkripthibakeresés töréspontokkal. Beállíthatók töréspontok sorokban, karakterekben, parancsokban és változó-hozzáféréskor. A töréspontok irányíthatók cmdletekkel.
Kezelési és rendszeresemények fogadása, továbbítása és azok esetén való műveletek. A PowerShell-hosztok értesíthetők állapotváltozásokról. Továbbá a szkriptek feliratkozhatnak ObjectEventekre, PSEventekre és WmiEventekre és feldolgozhatják.
Windows PowerShell Integrated Scripting Environment (ISE): GUI-alapú PowerShell-hoszt integrált hibakeresővel, szintaxiskiemeléssel, parancskiegészítéssel, legfeljebb 8 futástérrel és kiválasztott programrészek futtatásának lehetőségével.
Új API-k, több irányítással az értelmező és a futásidő felett, futásterek létrehozásával, korlátozott futásterekkel, melyek csak a PowerShell bizonyos részét használhatják, valamit a tranzakciókban való részvétel támogatása
Windows PowerShell 3.0
A PowerShell 3.0 a Windows 8-ba és Windows Server 2012-be van integrálva, és elérhető volt Windows 7 SP1, Windows Server 2008 SP1 és Windows Server 2008 R2 SP1 rendszerekre is.[74][75]
A PowerShell 3.0 egy nagyobb csomag, a távoli hozzáférést támogató WinRM-et tartalmazó Windows Management Framework (WMF) 3.0 része.[76][75] Több Community Technology Preview változat jelent meg. A WMF 3.0 CTP 2 2011. december 2-án jelent meg.[77] A WMF 3.0 2012. december 3-án jelent meg,[78] és a Windows 8 és Windows Server 2012 része.[79]
A PowerShell 3.0 új funkciói például:[75][80]:33–34
Csatlakoztatható és szétkapcsolható munkamenetek. A távoli munkamenetek kevésbé érzékenyek a hálózati hibákra.
Kódkiegészítés (IntelliSense) és kódrészletek, továbbá párbeszédablakok támogatása PowerShell ISE-ben cmdletek paramétereinek kitöltéséhez.
A rendszergazdai feladatok átadhatók a feladatra való jogosultsággal nem rendelkező felhasználóknak állandó jogok adása nélkül.
A segítségdokumentációk frissíthetők az Update-Help paranccsal.
Automatikus modulészlelés. A kódkiegészítés betöltetlen modulok esetén is működik.
Windows PowerShell 4.0
A PowerShell 4.0 a Windows 8.1-be és a Windows Server 2012 R2-be van integrálva, továbbá elérhető Windows 7 SP1, Windows Server 2008 R2 SP1 és Windows Server 2012 rendszerekre.[81]
A PowerShell 4.0 új funkciói például:
Desired State Configuration:[82][83][84] Deklaratív kiterjesztések és eszközök a rendszerbeállítási adatokhoz DMTF kezelési szabvánnyal és WS-Management protokollal.
Az alapértelmezett végrehajtási irányelv a szervereken a RemoteSigned.
Távoli számítógépeken telepített modul dokumentációinak mentése SaveHelppel
A hibakereső támogatja a hibakeresési munkameneteket (azok mentésével együtt) és a távoli végrehajtását.
-PipelineVariable váltó a jelenlegi futószalag-objektum megjelenítésére
Hálózati diagnosztika fizikai és virtuális hálózati switchek ellenőrzésére
Where és ForEach metódusszintaxis objektumok szűrésére és azokon keresztül való iterálásra.
Windows PowerShell 5.0
Windows Management Framework (WMF) 5.0 RTM which includes PowerShell 5.0 was re-released to web on February 24, 2016, following an initial release with a severe bug.[85]
Fontos funkciók például:
Új kulcsszavak: class osztályok létrehozására és enum felsorolására.
A Windows 10 évfordulós frissítésével együtt jelent meg[88] 2016. augusztus 2-án, továbbá a Windows Server 2016-ban is jelen volt.[89] A PackageManagement támogatja a proxikat, a PSReadLine a ViMode-ot, és megjelent a Get-TimeZone és a Set-TimeZone. A LocalAccounts modulban hozzáadható és eltávolítható helyi felhasználói fiók.[90] Megjelent PowerShell 5.1-előnézet Windows 7-re, Windows Server 2008-ra, Windows Server 2008 R2-re, Windows Server 2012-re és Windows Server 2012 R2-re 2016. július 16-án,[91] a végleges változata 2017. január 19-én jelent meg.[92]
A PowerShell 5.1 az első verzió, mely 2 kiadásban (Desktop és Core) jelent meg. A Desktop kiadás a hagyományos Windows PowerShell folytatása, és .NET keretrendszeren fut. A Core kiadás a .NET Core-on fut, és a Windows Server 2016 Nano Server része. Kisebb mérete mellett ez utóbbiban nincsenek például vágólapkezelő vagy tartományhoz csatlakoztató cmdletek, WMI 1-cmdletek, eseménynapló-cmdletek és profilok.[22] Ez az utolsó, csak Windowson kiadott PowerShell-verzió.
PowerShell Core 6
A PowerShell Core 6.0 2016. augusztus 18-án lett bejelentve, mikor a Microsoft létrehozta a PowerShell Core-t, és eldöntötte, hogy a terméket platformfüggetlen szabad szoftverré tenné.[3] 2018. január 10-én lett elérhető Windowsra, macOS-re és Linuxra.[93] Saját termékéletciklusa van, és a Windows 10-zel bevezetett életciklusszabálynak felel meg: csak a legutóbbi PowerShell Core-verzió támogatott. A Microsoft mintegy 6 havonta jelentetett meg új PowerShell Core-alverziót.[94]
A legfontosabb változás e PowerShell-változatban a más platformokra való kiterjedés. Windowson e változat nem adott fontos új funkciót. A PowerShell készítőit megkérték a 10 legfontosabb dolog felsorolására, mely egy IT-dolgozóval történhet, aki a Windows PowerShell 5.1-ről a PowerShell Core 6.0-ra térne át, azonban Angel Calvo, a Microsoft dolgozója csak 2-t tudott megnevezni: hogy platformfüggetlen, és hogy nyílt forrású.[95]
6.1
A Microsoft szerint a PowerShell 6.1 új jellemzője a „több mint 1900 cmdlettel való kompatibilitás a Windows 10-ben és a Windows Server 2019-ben”.[96] Azonban a teljes frissítési napló e cmdletekről nem tartalmaz információt.[97] A Microsoft később azt írta, hogy e szám kevés volt, mivel a PowerShell Core nem tudta a PowerShell 5.1-et felváltani, és nem volt sokat használt a Windowson.[98] Azonban Linuxon népszerű volt.[98]
6.2
A PowerShell Core 6.2 elsősorban teljesítményjavításokra, hibajavításokra és kisebb cmdlet- és nyelvi javításokra fókuszált.[99]
PowerShell 7
A PowerShell 7 felváltotta a PowerShell Core 6.x-et és a Windows PowerShell 5.1-et, mely az utolsó Windows PowerShell-verzió.[100][98] The focus in development was to make PowerShell 7 a viable replacement for Windows PowerShell 5.1, i.e. to have near parity with Windows PowerShell in terms of compatibility with modules that ship with Windows.[101]
A PowerShell 7.2 a 7.0 után megjelent legújabb hosszú távon támogatott PowerShell-verzió. A .NET 6.0-t használja, és univerzális telepítőcsomagjai vannak Linuxra. A Windowson a PowerShell 7.2-től a frissítések a Microsoft Update-en keresztül történnek, ez nem volt így a 6.0-tól a 7.1-ig.[103]
PowerShell 7.3
E verzió általános cmdletfrissítéseket és javításokat tartalmaz, keretrendszerfüggő csomagok tesztelésével, létrehozási és csomagjavításokkal.[104]
Cmdletek más parancsokkal való összehasonlítása
Az alábbi táblázat a PowerShell-lel együtt érkező cmdleteket listázza, hasonló parancsokkal ismert parancsértelmezőkben. Sok hasonló parancs alternatív név a PowerShellben.
PowerShell-cmdletek összehasonlítása más értelmezők belső és külső parancsaival
A Pash nyílt forrású és platformfüggetlen PowerShell-megvalósítás Mono keretrendszerrel.[133] A Pasht Igor Moochnick kezdte, C#-ben írta, és GNU General Public License alatt adta ki. A Pash fejlesztése 2008-ban leállt, a GitHubon 2012-ben újraindult,[134] és 2016-ban véget ért, mikor a PowerShell nyílt forrásúvá és platformfüggetlenné vált.[135]
Jegyzetek
↑Release 7.4.6, 2024. október 22. (Hozzáférés: 2024. október 24.)
↑Snover, Jeffrey: SQL Server Support for PowerShell!. Windows PowerShell Blog . Microsoft, 2007. november 13. [2007. november 15-i dátummal az eredetiből archiválva]. (Hozzáférés: 2007. november 13.)
↑Wilson, Ed. 1: Overview of Windows PowerShell 3.0, Windows Powershell 3.0 Step by Step. Sebastopol, California: Microsoft Press (2013. december 9.). ISBN 978-0-7356-7000-6. OCLC829236530 „Windows PowerShell 3.0 comes with about 1,000 cmdlets on Windows 8”
↑Wilson, Ed. 1: Overview of Windows PowerShell 5.0, Windows PowerShell Step by Step, Third, Redmond, Washington: Microsoft Press (2015). ISBN 978-1-5093-0043-3. OCLC927112976 „Windows PowerShell 5.0 comes with about 1,300 cmdlets on Windows 10”
Ez a szócikk részben vagy egészben a PowerShell című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.