PowerShell

From Wikipedia, the free encyclopedia

PowerShell

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).

Gyors adatok
PowerShell
Thumb

Paradigmaimperatív, futószalagos, objektumorientált, funkcionális és reflektív
Megjelent2006. november 14.
TervezőJeffrey Snover, Bruce Payette, James Truher (et al.)
FejlesztőMicrosoft
Utolsó kiadás7.5.0 (stabil verzió, 2025. január 23.)[1]
Hatással volt rá
Operációs rendszer
LicencMIT licenc[2] (a Windows-komponens továbbra is kereskedelmi)
Weboldal
Bezárás

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.

Thumb
Ubuntu 22.10-en futó PowerShell for Linux 7.3.1

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:

További információk Verzió, Cmdletek ...
Verzió Cmdletek
Windows PowerShell 1.0 129[36]
Windows PowerShell 2.0 632[37]
Windows PowerShell 3.0 mintegy 1000[38]
Windows PowerShell 4.0 N/A
Windows PowerShell 5.0 mintegy 1300[39]
Windows PowerShell 5.1 N/A
PowerShell Core 6.0 N/A
PowerShell Core 6.1 N/A
PowerShell Core 6.2 N/A
PowerShell 7.0 N/A
PowerShell 7.1 N/A
PowerShell 7.2 N/A
Bezárás

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]

function name ([Type]$Param1, [Type]$Param2) {
  # Instructions
}

A PowerShell lehetővé tesz haladó függvényeket elnevezett, helyzeti, váltó- és dinamikus paraméterekkel.[52]

function Verb-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]

name value1 value2
Verb-Noun -Param1 value1 -Param2 value2

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]

További információk Sorozat, Jelentés ...
A PowerShell speciális karakterei
Sorozat Jelentés
`0 Null
`a Értesítés
`b Backspace
`e Feloldójel (PowerShell 6-tól)
`f Oldaltörés
`n Új sor
`r Kocsi vissza
`t Vízszintes tabulátor
`u{x} Unicode-feloldósorozat (PowerShell 6-tól)
`v Függőleges tabulátor
--% minden karaktert szó szerint értelmez
Bezárás

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.

Windows PowerShell 1.0

Thumb
Windows PowerShell 1.0-munkamenet Windows-konzollal

A PowerShell 1.0 2006 novemberében jelent meg Windows XP SP2-re, Windows Server 2003 SP1-re és Windows Vistára.[61] A Windows Server 2008 opcionális része is volt.

Windows PowerShell 2.0

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 PowerShell 2.0 új funkciói például:[67][68][69]

  • 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.
  • Hálózati fájltranszfer: fájlok elsőbbségi, késleltetett és aszinkron transzfere Background Intelligent Transfer Service-szel (BITS).[71]
  • Új cmdletek, például a táblázatadatot WPF GridView objektumban telepített és bekapcsolt ISE esetén kiadó Out-GridView.
  • Új operátorok: -Split, -Join és splatting (@).
  • Kivételkezelés Try-Catch-Finally szerkezettel, több kivételtípussal egy catch blokkal.
  • Beágyazható Here-karakterláncok[72]
  • Többsoros megjegyzések <# és #> határolókkal.[73]
  • Ú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.[75][76] 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

  • Adott időpontra ütemezett feladatok a Windows feladatütemezővel.
  • 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

Thumb
PowerShell 5.0 icon

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.
  • OneGet cmdletek a Chocolatey támogatására[86]
  • 2. rétegű hálózati switchek kezelésének támogatása.[87]
  • Hibakeresés a PowerShell háttérfolyamataiban és más folyamatok PowerShell-példányaiban („futásterekben”)
  • Desired State Configuration (DSC) Local Configuration Manager (LCM) 2.0
  • DSC részleges beállítások
  • DSC Local Configuration Manager metabeállítások
  • DSC erőforrások ellenőrzése PowerShell-osztályokkal

Windows PowerShell 5.1

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ó.[98][100] 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 új funkciói például:[102]

  • -Parallel váltó ForEach-Object cmdlethez
  • beépített Windows-modulokkal való kompatibilitás javításai
  • Új hibanézet
  • Get-Error cmdlet
  • futószalag-összekapcsoló && és || operátorok a futószalag következő tagjának feltételes végrehajtásához
  • ?: operátor (terner művelet)
  • ?? nullellenőrző operátor és értékadó megfelelője, a {{{1}}} operátor
  • Platformfüggetlen Invoke-DscResource (kísérleti)
  • Az Out-GridView cmdlet visszatérése
  • A Get-Help-ShowWindow” váltójának visszatérése

PowerShell 7.2

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.

További információk Parancssor, Unix shell ...
PowerShell-cmdletek összehasonlítása más értelmezők belső és külső parancsaival
PowerShell (cmdlet) PowerShell (alternatív név) Parancssor Unix shell Leírás
Get-ChildItem gci, dir, ls[a] dir ls Adott mappa elemeinek listáját írja ki
Test-Connection[b] ping ping ping ICMP echo kéréseket küld a megadott géphez a jelenlegiből, vagy más gépet kér fel erre
Get-Content gc, type, cat type cat Egy fájl tartalmait írja ki
Get-Command gcm help, where type, which, compgen Elérhető parancsokat és parancsutat ír ki
Get-Help help, man[a] help apropos, man Egy parancs dokumentációját írja ki
Clear-Host cls, clear cls clear Kiüríti a konzolt[c]
Copy-Item cpi, copy, cp copy, xcopy, robocopy cp Fájlokat, mappákat másol a megadott helyre
Move-Item mi, move, mv move mv Fájlokat, mappákat helyez át a megadott helyre
Remove-Item ri, del, erase, rmdir, rd, rm del, erase, rmdir, rd rm, rmdir Fájlokat, mappákat töröl
Rename-Item rni, ren, mv ren, rename mv Egy mappát, fájlt vagy hivatkozást nevez át
Get-Location gl, cd, pwd cd pwd Jelenlegi út kiírása
Pop-Location popd popd popd A veremhez legutóbb hozzáadott helyre módosítja a jelenlegi utat
Push-Location pushd pushd pushd A jelenlegi utat teszi a verembe
Set-Location sl, cd, chdir cd, chdir cd Módosítja a jelenlegi utat
Tee-Object tee N/A tee Bemenetet irányít fájlhoz vagy változóhoz, a bemenetet onnan beolvasva
Write-Output echo, write echo echo A standard kimenetre ír ki sztringet vagy más objektumot
Get-Process gps, ps tlist,[d] tasklist[e] ps Minden futó folyamat kiírása
Stop-Process spps, kill kill,[d] taskkill[e] kill[f] Leállít egy futó folyamatot
Select-String sls find, findstr grep Adott mintának megfelelő sorokat ír ki
Set-Variable sv, set set env, export, set, setenv Létrehoz vagy megváltoztat egy környezeti változót
Invoke-WebRequest iwr, curl, wget[g] curl[106] wget, curl Weblap tartalmait nyeri ki
Bezárás

Megjegyzések

  1. Az ls és man nincs jelen a PowerShell linuxos változatában.
  2. Bár a külső ping elérhető maradt a PowerShellen, a Test-Connection kimenete programmal vizsgálható strukturált objektum.[105]
  3. A Clear-Host előre definiált PowerShell-függvény.
  4. Elérhető a Windows NT 4.0-ban, a Windows 98 Resource Kitben és a Windows 2000 Support Toolsban
  5. A Windows XP Professionalben jelent meg
  6. A UNIX is használja tetszőleges jel küldésére, a Terminate csak alapértelmezett
  7. A curl és a wget nincsenek jelen a PowerShell Core-ban a hasonló nevű natív parancsokkal való ütközés elkerülése végett.

Fájlnévkiterjesztések

További információk Kiterjesztés, Leírás ...
Kiterjesztés Leírás
.ps1Szkriptfájl[107]
.psd1Modul manifestfájlja, általában modullal együtt található[108]
.psm1Modulfájl[109]
.dllDLL-kompatibilis[a] bináris modulfájl[110]
.ps1xmlFormátum- és típusdefiníció-fájl[47][111]
.xmlXML-kompatibilis[b] szerializált adatfájl[112]
.psc1Konzolfájl[113]
.psscMunkamenet-konfigurációs fájl[114]
.psrcSzerepképességfájl[115]
Bezárás
  1. A Dynamic-link library (DLL) nem korlátozódik a PowerShellre, hanem általános formátum .NET Assembly kód tárolásához.
  2. Az XML-t nemcsak a PowerShell használja: az gyakori információközlő formátum.

Támogatás

További információk Alkalmazás, Verzió ...
Alkalmazás Verzió Cmdletek Szolgáltató Kezelő GUI
Exchange Server 2007 402 Igen Igen
Windows Server 2008 Igen Igen Nem
Microsoft SQL Server 2008 Igen Igen Nem
Microsoft SharePoint 2010 Igen Igen Nem
System Center Configuration Manager 2012 R2 400+ Igen Nem
System Center Operations Manager 2007 74 Igen Nem
System Center Virtual Machine Manager 2007 Igen Igen Igen
System Center Data Protection Manager 2007 Igen Nem Nem
Windows Compute Cluster Server 2007 Igen Igen Nem
Microsoft Transporter Suite for Lotus Domino[116] 08.02.0012 47 Nem Nem
Microsoft PowerTools for Open XML[117] 1.0 33 Nem Nem
IBM WebSphere MQ[118] 6.0.2.2 44 Nem Nem
IoT Core kiterjesztések[119] 74 Ismeretlen Ismeretlen
Quest Management Shell for Active Directory[120] 1.7 95 Nem Nem
Special Operations Software Specops Command[121] 1.0 Igen Nem Igen
VMware vSphere PowerCLI[122] 6.5 R1 500+ Igen Igen
Internet Information Services[123] 7.0 54 Igen Nem
Windows 7 Troubleshooting Center[124] 6.1 Igen Nem Igen
Microsoft Deployment Toolkit[125] 2010 Igen Igen Igen
NetApp PowerShell Toolkit[126][127] 4.2 2000+ Igen Igen
JAMS Scheduler – Job Access & Management System[128] 5.0 52 Igen Igen
UIAutomation[129] 0.8 432 Nem Nem
Dell Equallogic[130] 3.5 55 Nem Nem
LOGINventory[131] 5.8 Igen Igen Igen
SePSX[132] 0.4.1 39 Nem Nem
Bezárás

Alternatív megvalósítás

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

Fordítás

Források

További információk

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.