Mi az a Windows PowerShell, és mivel fogyasztják? 1. rész: Főbb jellemzők

Korábban a Unix rendszerek parancssori segédprogramjai jobban fejlettek, mint a Windowson, de egy új megoldás 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. Ezzel módosíthatja a beállításokat, leállíthatja és elindíthatja a szolgáltatásokat, valamint karbantartást is végezhet a legtöbb telepített alkalmazáson. Rossz lenne a kék ablakot egy másik parancsértelmezőnek tekinteni. Ez a megközelítés nem tükrözi a Microsoft által javasolt újítások lényegét. Valójában a Windows PowerShell lehetőségei sokkal szélesebbek: egy rövid cikksorozatban megpróbáljuk kitalálni, miben tér el a Microsoft megoldása az általunk jobban ismert eszközöktől.

Mi az a Windows PowerShell, és mivel fogyasztják? 1. rész: Főbb jellemzők

Főbb jellemzők 

Természetesen a Windows PowerShell elsősorban egy parancsfájl-héj, amely eredetileg a .NET-keretrendszerre, majd később a .NET Core-ra épült. A szöveges adatokat elfogadó és visszaadó parancsértelmezőkkel ellentétben a Windows PowerShell tulajdonságokkal és metódusokkal rendelkező .NET-osztályokkal működik. A PowerShell lehetővé teszi általános parancsok futtatását, valamint hozzáférést biztosít a COM, WMI és ADSI objektumokhoz. Különféle tárolókat használ, például a fájlrendszert vagy a Windows registry-t, amelyek eléréséhez ún. szolgáltatók. Érdemes megjegyezni a PowerShell végrehajtható komponensek más alkalmazásokba való beágyazásának lehetőségét, hogy különféle műveleteket hajtsanak végre, pl. grafikus felületen keresztül. Ennek a fordítottja is igaz: sok Windows-alkalmazás a PowerShell-en keresztül biztosít hozzáférést felügyeleti felületeihez. 

A Windows PowerShell lehetővé teszi a következőket:

  • Az operációs rendszer beállításainak módosítása;
  • Szolgáltatások és folyamatok kezelése;
  • Szerver szerepkörök és összetevők konfigurálása;
  • Telepítő program;
  • A telepített szoftverek kezelése speciális interfészeken keresztül;
  • Futtatható összetevők beágyazása harmadik féltől származó programokba;
  • Szkriptek létrehozása az adminisztrációs feladatok automatizálásához;
  • Dolgozzon a fájlrendszerrel, a Windows rendszerleíró adatbázissal, a tanúsítványtárolóval stb.

Shell és fejlesztői környezet

A Windows PowerShellnek két formája van: a parancshéjjal rendelkező konzolemulátoron kívül van egy Integrated Scripting Environment (ISE). A parancssori felület eléréséhez egyszerűen válassza ki a megfelelő parancsikont a Windows menüből, vagy futtassa a powershell.exe fájlt a Futtatás menüből. Egy kék ablak jelenik meg a képernyőn, amely jelentősen eltér az özönvíz előtti cmd.exe képességeitől. Vannak automatikus kiegészítés és egyéb funkciók, amelyeket a Unix rendszerek parancshéjainak felhasználói ismernek.

Mi az a Windows PowerShell, és mivel fogyasztják? 1. rész: Főbb jellemzők

A shell használatához emlékeznie kell néhány billentyűparancsra:

  • A fel és le nyilak görgetik az előzményeket a korábban begépelt parancsok megismétléséhez;
  • A sor végén lévő jobbra nyíl karakterről karakterre írja be újra az előző parancsot;
  • A Ctrl+Home törli a beírt szöveget a kurzor helyétől a sor elejéig;
  • Ctrl+End törli a szöveget a kurzortól a sor végéig.

Az F7 egy ablakot jelenít meg a beírt parancsokkal, és lehetővé teszi az egyik kiválasztását. A konzol működik az egérrel történő szövegkijelöléssel, másolás-beillesztéssel, kurzor pozicionálással, törléssel, visszalépéssel – mindennel, amit szeretünk.

Mi az a Windows PowerShell, és mivel fogyasztják? 1. rész: Főbb jellemzők
A Windows PowerShell ISE egy komplett fejlesztői környezet füles és szintaxis-kiemelt kódszerkesztővel, parancskészítővel, beépített hibakeresővel és egyéb programozási örömökkel. Ha a fejlesztőkörnyezet-szerkesztőben a parancs neve után kötőjelet írunk, akkor a legördülő listában minden elérhető opció megjelenik a típus megjelölésével. A PowerShell ISE elindítható a rendszermenü parancsikonjával vagy a powershell_ise.exe végrehajtható fájl használatával.

Mi az a Windows PowerShell, és mivel fogyasztják? 1. rész: Főbb jellemzők

Parancsmagok 

A Windows PowerShellben az ún. parancsmagok. Ezek speciális .NET-osztályok, amelyek számos funkciót biztosítanak. Ezek neve Action-Object (vagy Ige-Főnév, ha úgy tetszik), és a kötőjellel elválasztott hivatkozás hasonlít a természetes nyelvi mondatok állítmányára és alanyára. Például a Get-Help szó szerint azt jelenti, hogy "Súgó kérése", vagy PowerShell-kontextusban: "Show-Help". Valójában ez a man parancs analógja a Unix rendszerekben, és a PowerShellben a kézikönyveket így kell kérni, nem pedig a --help vagy /? billentyűvel parancsmagok meghívásával. Ne feledkezzünk meg az online PowerShell dokumentációról: A Microsoft elég részletesen ismerteti.

A Get mellett a parancsmagok más igéket is használnak a műveletek jelölésére (és nem csak igéket, szigorúan véve). Az alábbi listában mutatunk néhány példát:

Add - hozzá;
Clear - egyértelmű;
Enable - bekapcsolni;
Disable - kikapcsol;
New - létrehozni;
Remove - törölni;
Set - kérdezni;
Start - fuss;
Stop - állj meg;
Export - export;
Import - import.

Vannak rendszer-, felhasználói és opcionális parancsmagok: a végrehajtás eredményeként mindegyik egy objektumot vagy objektumok tömbjét ad vissza. Nem érzékenyek a kis- és nagybetűkre, pl. a parancsértelmező szempontjából nincs különbség a Get-Help és a get-help között. Az elválasztáshoz a ';' karaktert használjuk, de csak akkor kötelező elhelyezni, ha több parancsmag fut ugyanabban a sorban. 

A Windows PowerShell-parancsmagok modulokba vannak csoportosítva (NetTCPIP, Hyper-V stb.), és van egy Get-Command parancsmag az objektum és művelet szerinti kereséshez. A súgót így jelenítheti meg:

Get-Help Get-Command

Mi az a Windows PowerShell, és mivel fogyasztják? 1. rész: Főbb jellemzők

Alapértelmezés szerint a parancs rövid súgót jelenít meg, de a paraméterek (argumentumok) szükség szerint átadódnak a parancsmagoknak. Segítségükkel például részletes (paraméter -Részletes) vagy teljes (paraméter -Teljes) súgót kaphat, illetve példákat is megjeleníthet (paraméter -Példák):

Get-Help Get-Command -Examples

A Windows PowerShell súgóját az Update-Help parancsmag frissíti. Ha a parancssor túl hosszúnak bizonyul, a parancsmag argumentumait áthelyezheti a következőre a '`' szolgáltatáskarakter beírásával és az Enter lenyomásával - ha az egyik sorban befejezi a parancsot, és folytatja a másik sorban, az nem fog működni.

Íme néhány példa a gyakori parancsmagokra: 

Get-Process - megjeleníteni a rendszerben futó folyamatokat;
Get-Service — a szolgáltatások és állapotuk megjelenítése;
Get-Content - megjeleníti a fájl tartalmát.

A gyakran használt parancsmagokhoz és külső segédprogramokhoz a Windows PowerShell rövid szinonimákkal rendelkezik - álnevek (az angolból. Alias). Például a dir a Get-ChildItem álneve. A szinonimák listája a Unix rendszerekből származó parancsok analógjait is tartalmazza (ls, ps stb.), és a Get-Help parancsmagot a help parancs hívja meg. A szinonimák teljes listája megtekinthető a Get-Alias ​​parancsmag segítségével:

Mi az a Windows PowerShell, és mivel fogyasztják? 1. rész: Főbb jellemzők

Szkriptek, függvények, modulok és a PowerShell nyelv

A Windows PowerShell-szkriptek egyszerű szöveges fájlokként vannak tárolva .ps1 kiterjesztéssel. Nem indíthatja el őket dupla kattintással: jobb egérgombbal kattintson a helyi menü előhívásához, és válassza ki a „Futtatás a PowerShellben” elemet. A konzolról vagy meg kell adnia a szkript teljes elérési útját, vagy a megfelelő könyvtárba kell lépnie, és meg kell írnia a fájl nevét. A szkriptek futtatását a rendszerházirend is korlátozza, és az aktuális beállítások ellenőrzéséhez használhatja a Get-ExecutionPolicy parancsmagot, amely a következő értékek egyikét adja vissza:

Restricted — a szkriptek indítása le van tiltva (alapértelmezés szerint);
AllSigned - csak megbízható fejlesztő által aláírt szkriptek indítása engedélyezett;
RemoteSigned - aláírt és saját szkriptek futtatása;
Unrestricted - bármilyen szkript futtatása engedélyezett.

Az adminisztrátornak két lehetősége van. A legbiztonságosabb a szkriptek aláírása, de ez elég komoly varázslat – a következő cikkekben foglalkozunk vele. Most lépjünk a legkisebb ellenállás útján, és változtassuk meg a politikát:

Set-ExecutionPolicy RemoteSigned

Mi az a Windows PowerShell, és mivel fogyasztják? 1. rész: Főbb jellemzők
Ehhez a PowerShellt rendszergazdaként kell futtatni, bár egy speciális beállítással módosíthatja az aktuális felhasználó házirendjét.

A szkriptek objektum-orientált programozási nyelven íródnak, amelynek parancsai ugyanazon elv szerint vannak elnevezve, mint a korábban tárgyalt parancsmagok: "Action-Object" ("Ige-Noun"). Fő célja az adminisztrációs feladatok automatizálása, de egy teljes értékű értelmezett nyelv, amely minden szükséges konstrukcióval rendelkezik: feltételes ugrás, ciklusok, változók, tömbök, objektumok, hibakezelés stb. Bármely szövegszerkesztő alkalmas a szkriptek készítésére, de a legjobb a Windows PowerShell ISE futtatása.

Paramétereket adhat át a szkriptnek, kötelezővé teheti őket, és beállíthat alapértelmezett értékeket. Ezenkívül a Windows PowerShell lehetővé teszi a függvények létrehozását és meghívását a parancsmagokhoz hasonlóan, a függvénykonstrukció és a kapcsos zárójelek használatával. A függvényekkel rendelkező szkriptet modulnak nevezzük, és .psm1 kiterjesztéssel rendelkezik. A modulokat a PowerShell környezeti változókban meghatározott könyvtárakban kell tárolni. Ezeket a következő paranccsal tekintheti meg:

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

Szállító

Az utolsó példában a Unix shell-felhasználók számára ismerős konstrukciót használtunk. A Windows PowerShellben a függőleges sáv azt is lehetővé teszi, hogy az egyik parancs kimenetét átadjuk egy másik parancs bemenetének, de jelentős különbség van a folyamat megvalósításában: már nem egy karakterkészletről vagy valamiféle karakterkészletről beszélünk. szöveg. A beépített parancsmagok vagy a felhasználó által definiált függvények objektumokat vagy objektumtömböket adnak vissza, és bemenetként is fogadhatják azokat. A Bourne-héjhoz és számos utódjához hasonlóan a PowerShell is egyszerűbbé teszi az összetett feladatokat egy folyamattal.

A legegyszerűbb csővezeték-példa így néz ki:

Get-Service | Sort-Object -property Status

Mi az a Windows PowerShell, és mivel fogyasztják? 1. rész: Főbb jellemzők
Először a Get-Service parancsmagot hajtják végre, majd az általa fogadott összes szolgáltatást átadják a Sort-Object parancsmagnak a Status tulajdonság szerinti rendezés céljából. Az, hogy a folyamat előző szakaszának eredménye melyik argumentumhoz kerül átadásra, annak típusától függ – általában az InputObject. Ezt a problémát részletesebben a PowerShell programozási nyelvnek szentelt cikk tárgyalja. 

Ha szeretné, folytathatja a láncot, és átadhatja a Sort-Object művelet eredményét egy másik parancsmagnak (balról jobbra hajtják végre). A Windows-felhasználók egyébként hozzáférhetnek az összes Unixoid számára ismert oldalszámozási konstrukcióhoz is: 

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

Feladatok futtatása a háttérben 

Gyakran előfordul, hogy egy bizonyos parancsot a háttérben kell futtatni, hogy ne várjuk meg a végrehajtás eredményét a shell-munkamenetben. A Windows PowerShell számos parancsmagot tartalmaz erre az esetre:

Start-Job - háttérfeladat indítása;
Stop-Job — állítsa le a háttérfeladatot;
Get-Job — a háttérfeladatok listájának megtekintése;
Receive-Job — a háttérfeladat végrehajtásának eredményének megtekintése;
Remove-Job — háttérfeladat törlése;
Wait-Job - a háttérfeladat visszaadása a konzolra.

Egy háttérfeladat elindításához a Start-Job parancsmagot használjuk, és kapcsos zárójelben adunk meg egy parancsot vagy parancskészletet:

Start-Job {Get-Service}

Mi az a Windows PowerShell, és mivel fogyasztják? 1. rész: Főbb jellemzők
A Windows PowerShell háttérfeladatai a nevük ismeretében manipulálhatók. Először is tanuljuk meg, hogyan jelenítsük meg őket:

Get-Job

Mi az a Windows PowerShell, és mivel fogyasztják? 1. rész: Főbb jellemzők
Most pedig mutassuk meg a Job1 feladat eredményét:

Receive-Job Job1 | more

Mi az a Windows PowerShell, és mivel fogyasztják? 1. rész: Főbb jellemzők
Minden nagyon egyszerű.

Távoli parancsvégrehajtás

A Windows PowerShell nem csak a helyi számítógépen, hanem egy távoli számítógépen, sőt a gépek egész csoportján is lehetővé teszi parancsok és parancsfájlok végrehajtását. Ennek többféle módja van:

  • Sok parancsmag rendelkezik paraméterekkel -ComputerName, de így nem fog működni például egy szállítószalag létrehozása;
  • Cmdlet Enter-PSSession lehetővé teszi interaktív munkamenet létrehozását egy távoli gépen; 
  • A cmdlet használatával Invoke-Command parancsokat vagy parancsfájlokat futtathat egy vagy több távoli számítógépen.

A PowerShell verziói

A PowerShell sokat változott 2006-os első kiadása óta. Az eszköz számos különböző hardverplatformon (x86, x86-64, Itanium, ARM) futó rendszerhez elérhető: 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 6.2 legújabb kiadása 10. január 2018-én jelent meg. A korábbi verziókhoz írt szkriptek valószínűleg működni fognak a későbbi verziókban, de a háttérportolás problémás lehet, mivel a PowerShell számos új parancsmagot vezetett be a fejlesztési évek során. A számítógépre telepített parancshéj verzióját a $PSVersionTable beépített változó PSVersion tulajdonságával találhatja meg:

$PSVersionTable.PSVersion

Mi az a Windows PowerShell, és mivel fogyasztják? 1. rész: Főbb jellemzők
Használhatja a parancsmagot is:

Get-Variable -Name PSVersionTable –ValueOnly

Mi az a Windows PowerShell, és mivel fogyasztják? 1. rész: Főbb jellemzők
Ugyanez történik a Get-Host parancsmaggal is. Valójában sok lehetőség van, de használatukhoz meg kell tanulni a PowerShell programozási nyelvet, amit meg is fogunk tenni következő cikk

Eredményei 

A Microsoftnak sikerült egy igazán hatékony héjat létrehoznia kényelmes integrált környezettel a szkriptek fejlesztéséhez. A Unix világában nálunk megszokott eszközöktől a Windows család operációs rendszereivel, valamint a hozzájuk tartozó szoftverekkel és a .NET Core platformmal való mély integrációban tér el. A PowerShell objektumorientált héjnak nevezhető, mivel a parancsmagok és a felhasználó által definiált függvények objektumokat vagy objektumtömböket adnak vissza, és bemenetként vehetik fel azokat. Úgy gondoljuk, hogy ennek az eszköznek minden Windows szerveradminisztrátornak rendelkeznie kell: eltelt az idő, amikor nélkülözhette a parancssort. A fejlett konzolhéj különösen szükséges olcsó VPS-ünk, amelyen Windows Server Core fut, de ez egy teljesen más történet.

Mi az a Windows PowerShell, és mivel fogyasztják? 1. rész: Főbb jellemzők

A felmérésben csak regisztrált felhasználók vehetnek részt. Bejelentkezés, kérem.

Milyen témákkal kell először foglalkozni a sorozat következő cikkeiben?

  • 53,2%Programozás a PowerShellben123

  • 42,4%PowerShell98 függvények és modulok

  • 22,1%Hogyan írhat alá saját szkripteket?51

  • 12,1%Adattárak kezelése szolgáltatókon (szolgáltatókon) keresztül28

  • 57,6%Számítógép-felügyelet automatizálása a PowerShell segítségével133

  • 30,7%Szoftverkezelés és PowerShell végrehajtható fájlok beágyazása harmadik féltől származó termékekbe71

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

Forrás: will.com

Hozzászólás