ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe pĂ«r çfarĂ« pĂ«rdoret? Pjesa 1: funksionalitetet kryesore

Historikisht, utilitat e komandës në sistemet Unix janë zhvilluar më mirë se në Windows, megjithatë, me shfaqjen e zgjidhjeve të reja, situata ka ndryshuar.

Windows PowerShell i mundëson administratorëve të sistemeve të automatizojnë shumicën e detyrave rutinore. Me të, është e mundur të ndryshoni cilësimet, të ndaloni dhe të nisni shërbimet, si dhe të kryeni mirëmbajtjen e shumicës së aplikacioneve të instaluara. Të perceptosh dritaren blu si një interpretuese tjetër komande do të ishte e gabuar. Ky qasje nuk pasqyron thelbin e inovacioneve të ofruara nga Microsoft. Në të vërtetë, mundësitë e Windows PowerShell janë shumë më të gjera: në një cikël të vogël artikujsh, do të mundohemi të kuptojmë se si zgjidhja e Microsoft dallon nga mjete më të njohura për ne.

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe pĂ«r çfarĂ« pĂ«rdoret? Pjesa 1: funksionalitetet kryesore

Veçoritë kryesore 

Sigurisht, Windows PowerShell është para së gjithash një Shell komandash me një gjuhë skriptingu, e krijuar fillimisht mbi platformën .NET Framework, dhe më vonë mbi .NET Core. Ndryshe nga shell-in që pranojnë dhe kthen të dhëna tekstuale, Windows PowerShell punon me klasa .NET, të cilat kanë pronësi dhe metoda. PowerShell lejon të ekzekutoni komanda të zakonshme, por gjithashtu ofron qasje në objekte COM, WMI dhe ADSI. Ajo përdor depo të ndryshme, si sistemi i skedarëve ose regjistri i Windows, për të cilat janë krijuar 

Windows PowerShell lejon:

  • TĂ« ndryshoni cilĂ«simet e sistemit operativ;
  • TĂ« menaxhoni shĂ«rbimet dhe proceset;
  • TĂ« konfiguroni rolet dhe komponentĂ«t e serverit;
  • TĂ« instaloni softuer;
  • TĂ« menaxhoni softuerin e instaluar pĂ«rmes interfaces speciale;
  • TĂ« inkorporoni komponentĂ«t ekzekutivĂ« nĂ« programet e palĂ«ve tĂ« treta;
  • TĂ« krijoni skenarĂ« pĂ«r automatizimin e detyrave tĂ« administratĂ«s;
  • TĂ« punoni me sistemin e skedarĂ«ve, regjistrin e Windows, depozitĂ«n e certifikatave, etj.

Shell dhe mjedisi i zhvillimit

Ekziston Windows PowerShell nĂ« dy forma: pĂ«rveç emulatorit tĂ« konsolĂ«s me njĂ« shell komandash, ka njĂ« ambient tĂ« integruar scripting (Integrated Scripting Environment — ISE). PĂ«r tĂ« aksesuar ndĂ«rfaqen e linjĂ«s sĂ« komandave, mjafton tĂ« zgjidhni shkurtore pĂ«rkatĂ«se nĂ« menunĂ« Windows ose tĂ« nisni powershell.exe nga menuja ‘Ekzekuto’. NjĂ« dritare blu do tĂ« shfaqet nĂ« ekran, e cila dallon dukshĂ«m nga mundĂ«sitĂ« e cmd.exe tĂ« vjetruar. Aty ka autoshkruarje dhe veçori tĂ« tjera tĂ« njohura pĂ«r pĂ«rdoruesit e shell-eve tĂ« komandave tĂ« sistemeve Unix.

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe pĂ«r çfarĂ« pĂ«rdoret? Pjesa 1: funksionalitetet kryesore

Për të punuar me shell-in, duhet të mbani mend disa kombinime çelësh:

  • Shigjetat lart dhe poshtĂ« rrotullojnĂ« historinĂ« pĂ«r tĂ« pĂ«rsĂ«ritur komandat e shkruara mĂ« parĂ«;
  • Shigjeta e djathtĂ« nĂ« fund tĂ« rreshtit ri-shkruan komandĂ«n e mĂ«parshme simbol pas simbola;
  • Ctrl+Home fshin tekstin e shkruar nga pozita e kursorit deri nĂ« fillim tĂ« rreshtit;
  • Ctrl+End fshin tekstin nga kursori deri nĂ« fund tĂ« rreshtit.

F7 tregon njĂ« dritare me komandat e shkruara dhe lejon zgjedhjen e njĂ«rĂ«s prej tyre. NĂ« konsolĂ« gjithashtu funksionon zgjedhja e tekstit me miun, kopjimi, pozicionimi i kursorit, fshirja, backspace – gjithçka siç e duam.

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe pĂ«r çfarĂ« pĂ«rdoret? Pjesa 1: funksionalitetet kryesore
Windows PowerShell ISE është një ambient i plotë zhvillimi me mbështetje për skedat dhe editorin e kodit me ndriçimin e sintaksës, ndërtuesin e komandave, debugguer të integruar dhe të tjera kënaqësi për programuesit. Nëse në editorin e ambientit të zhvillimit pas emrit të komandës shkruani shenjën e defisit, do të merrni një listë rënëse me të gjitha parametrat e disponueshëm të shoqëruar me llojin. Mund ta nisni PowerShell ISE ose përmes shkurtoreve nga menuja sistemike, ose me skedarin ekzekutues powershell_ise.exe.

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe pĂ«r çfarĂ« pĂ«rdoret? Pjesa 1: funksionalitetet kryesore

Cmdlets 

NĂ« Windows PowerShell u shfaqĂ«n cmdlets (komandlet). KĂ«to janĂ« klasa tĂ« specializuara .NET, nĂ« tĂ« cilat Ă«shtĂ« e integruar njĂ« funksionalitet i ndryshĂ«m. Ato emĂ«rohen sipas parimit ‘Veprim-Objekt’ (ose ‘Folje-EmĂ«r’, nĂ«se preferoni kĂ«shtu), dhe lidhja e ndarĂ« me defis Ă«shtĂ« e ngjashme me predikatin dhe subjektin nĂ« fjali tĂ« gjuhĂ«ve natyrore. PĂ«r shembull, Get-Help literally do tĂ« thotĂ« ‘Merr-Pomoc’ ose nĂ« kontekstin e PowerShell: ‘Trego-MĂ«nyrĂ«n’. NĂ« thelb, kjo Ă«shtĂ« njĂ« analogji e komandĂ«s man nĂ« sistemet Unix dhe manualet nĂ« PowerShell duhet tĂ« kĂ«rkohen pikĂ«risht nĂ« kĂ«tĂ« mĂ«nyrĂ«, e jo duke thirrur komandlet me çelĂ«sin —help ose /?. Mos harroni as dokumentacionin online pĂ«r PowerShell: Microsoft ka njĂ« pĂ«rshkrim mjaft tĂ« detajuar.

Përveç Get, në komandletët përdoren edhe disa veprime të tjera me folje (dhe jo vetëm folje, në kuptimin e saktë). Në listën më poshtë do të japim disa shembuj:

Shto — tĂ« shtoni;
Pastroni — tĂ« pĂ«rshtatni;
Aktivizo — tĂ« aktivizoni;
Ç’ndaloni — tĂ« fikni;
E re — tĂ« krijoni;
Hiqni — tĂ« hiqni;
Caktoni — tĂ« caktoni;
Nisni — tĂ« filloni;
Nd stopping — tĂ« ndaloni;
Eksporto — tĂ« eksportoni;
Importoni — tĂ« importoni.

Ka komandletĂ« sistemike, tĂ« pĂ«rdoruesit dhe opcionale: si rezultat i ekzekutimit, tĂ« gjitha ato kthejnĂ« njĂ« objekt ose njĂ« masiv objektesh. Ato nuk janĂ« tĂ« ndjeshme ndaj regjistrit, dmth, nĂ« sytĂ« e interpretorit tĂ« komandave, nuk ka diferencĂ« mes Get-Help dhe get-help. PĂ«r ndarjen pĂ«rdoret simboli ‘;’, por duhet vendosur vetĂ«m nĂ«se nĂ« njĂ« rresht ekzekutohen disa komandletĂ«. 

Komandletë Windows PowerShell grupohen në module (NetTCPIP, Hyper-V etj.), dhe për kërkimin sipas objektit dhe veprimit ekziston komandlet Get-Command. Të tregoni ndihmë për të mund të bëni kështu:

Get-Help Get-Command

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe pĂ«r çfarĂ« pĂ«rdoret? Pjesa 1: funksionalitetet kryesore

Për default, komanda tregon ndihmën e shkurtër, por në komandletët, nëse është e nevojshme, kalohen parametra (argumente). Me ndihmën e tyre, për shembull, mund të merrni ndihmë të detajuar (parametri -Detailed) ose të plotë (parametri -Full), gjithashtu mund të tregoni në ekran shembuj (parametri -Examples):

Get-Help Get-Command -Examples

Ndihma nĂ« Windows PowerShell azhurnohet me komandlet Update-Help. NĂ«se rreshti i komandĂ«s bĂ«het shumĂ« i gjatĂ«, argumentet e komandletit mund tĂ« transferohen nĂ« rreshtin tjetĂ«r, duke shkruar simbolin shĂ«rbim ‘`’ dhe duke shtypur Enter — thjesht pĂ«rfundimi i komandĂ«s nĂ« njĂ« rresht dhe vazhdimi nĂ« njĂ« tjetĂ«r nuk do tĂ« funksionojĂ«.

Më poshtë do të japim disa shembuj të zakonshëm të komandletëve: 

Get-Process — tĂ« tregoni proceset e ekzekutuara nĂ« sistem;
Get-Service — tĂ« tregoni shĂ«rbimet dhe statusin e tyre;
Get-Content — tĂ« nxirrni pĂ«rmbajtjen e skedarit.

PĂ«r komandletĂ« qĂ« pĂ«rdoren shpesh dhe utilitetet e jashtme, nĂ« Windows PowerShell ekzistojnĂ« sinonime tĂ« shkurtra — aliaset (nga anglishtja. Alias). PĂ«r shembuj, dir — alias Get-ChildItem. NĂ« listĂ«n e sinonimeve ndodhen edhe analoge tĂ« komandave nga sistemet Unix (ls, ps etj.), dhe komandlet Get-Help thirret me komandĂ«n help. Lista e plotĂ« e sinonimeve mund tĂ« shihet me komandlet Get-Alias:

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe pĂ«r çfarĂ« pĂ«rdoret? Pjesa 1: funksionalitetet kryesore

Skenarët, funksionet, module dhe gjuha PowerShell

Skripti i Windows PowerShell ruajten si skedarë teksti të zakonshëm me zgjerimin .ps1. Nuk mund të niseni me një klik të dyfishtë: duhet të thoni me butonin e djathtë të mausit dhe të zgjidhni opsionin "Nis në PowerShell". Nga konsola do të duhet ose të tregoni rrugën e plotë për në skedarin, ose të kaloni në katalogun përkatës dhe të shkruani emrin e skedarit. Nisja e skenarëve gjithashtu është e kufizuar nga politika sistemike, dhe për të kontrolluar cilësimet aktuale mund të përdorni komandletin Get-ExecutionPolicy, i cili do të japë një nga vlerat e mëposhtme:

Restricted — nisja e skenarĂ«ve Ă«shtĂ« e ndaluar (nĂ« mĂ«nyrĂ« tĂ« paracaktuar);
AllSigned — lejohet vetĂ«m nisja e skenarĂ«ve tĂ« nĂ«nshkruar nga njĂ« zhvillues i besuar;
RemoteSigned — lejohet nisja e skenarĂ«ve tĂ« nĂ«nshkruar dhe tĂ« vetĂ«-krijuar;
Unrestricted — lejohet nisja e çdo skenari.

Administratori ka dy mundĂ«si veprimi. MundĂ«sia mĂ« e sigurt parashikon nĂ«nshkrimin e skenarĂ«ve, por kjo Ă«shtĂ« njĂ« magji mjaft e vĂ«shtirĂ« — do tĂ« merremi me tĂ« nĂ« artikujt e ardhshĂ«m. Tani do tĂ« ndjekim rrugĂ«n e rezistencĂ«s mĂ« tĂ« vogĂ«l dhe do tĂ« ndryshojmĂ« politikĂ«n:

Set-ExecutionPolicy RemoteSigned

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe pĂ«r çfarĂ« pĂ«rdoret? Pjesa 1: funksionalitetet kryesore
Për këtë PowerShell duhet të niset me emrin e administratorit, megjithatë me ndihmën e një parametri të veçantë mund të ndryshoni politikën edhe për përdoruesin aktual.

Skripti shkruhet në një gjuhë programimi objekt-orientuese, ku komandat e saj emërohen në të njëjtin princip si komandletë e shqyrtuara më parë: "Veprimi-Objekti" ("Folja-Emri"). Qëllimi kryesor i saj është automatizimi i detyrave të administratës, por kjo është një gjuhë interpretuese e plotë, ku ka të gjitha ndërtimet e nevojshme: kalime të kushtit, cikle, variabël, ekipe, objekte, trajtim gabimi, etj. Për të shkruar skenarë mund të përdoret çdo redaktues teksti, por më së miri është të nisni Windows PowerShell ISE.

NĂ« skenari mund tĂ« kaloni parametra, t'i bĂ«ni ata tĂ« detyrueshĂ«m, dhe gjithashtu tĂ« caktoni vlera tĂ« paracaktuara. PĂ«r mĂ« tepĂ«r, Windows PowerShell lejon krijimin e funksioneve dhe thirrjen e tyre nĂ« tĂ« njĂ«jtĂ«n mĂ«nyrĂ« si komandletĂ«: pĂ«r kĂ«tĂ« pĂ«rdoret ndĂ«rtimi Function dhe kllapat e Ń„ĐžĐłŃƒŃ€Ă«. Skenari me funksione quhet modul dhe ka zgjerimin .psm1. ModulĂ«t duhet tĂ« ruhen nĂ« katalogĂ«t e pĂ«rcaktuar nĂ« variablat e mjedisit PowerShell. Mund t’i shihni ata pĂ«rmes komandĂ«s sĂ« mĂ«poshtme:

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

Kongjellat

Në shembullin e fundit, aplikuam një konstrukcion të njohur për përdoruesit e shell-eve në sistemet Unix. Në Windows PowerShell, shenja vertikale gjithashtu lejon kalimin e daljes nga një komandë në hyrjen e një tjetër, por në realizimin e kongjellit ka një ndryshim të rëndësishëm: këtu nuk bëhet fjalë për një grup simboresh apo ndonjë tekst. Cmdlet-të e integruara ose funksionet e përdoruesve kthejnë objekte ose thjesht grupe objektesh, dhe mund të marrin ato si hyrje. Si në shell-in Bourne dhe pasuesit e tij të shumtë, në PowerShell me ndihmën e kongjellit thjeshtohet ekzekutimi i detyrave komplekse.

Shembulli më i thjeshtë i kongjelit duket kështu:

Get-Service | Sort-Object -property Status

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe pĂ«r çfarĂ« pĂ«rdoret? Pjesa 1: funksionalitetet kryesore
SĂ« pari, ekzekutohet cmdlet-i Get-Service, dhe pastaj tĂ« gjitha shĂ«rbimet e marra i transmetohen pĂ«r renditje sipas pronĂ«s Status cmdlet-it Sort-Object. Siç kalon rezultati i punĂ«s sĂ« pjesĂ«s sĂ« mĂ«parshme tĂ« kongjelit varion sipas llojit tĂ« tij — zakonisht Ă«shtĂ« InputObject. Ky çështje do tĂ« diskutohet mĂ« shumĂ« nĂ« njĂ« artikull tĂ« dedikuar pĂ«r gjuhĂ«n e programimit PowerShell. 

Nëse dëshirojmë, mund ta vazhdojmë vargun dhe të kalojmë rezultatin e punës Sort-Object në një cmdlet tjetër (ato do të ekzekutohen nga majtazi në djathtas). Në fakt, përdoruesve të Windows u është në dispozicion dhe konstrukcioni i njohur për të gjithë unixoidët për daljen një faqe: 

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

Ekzekutimi i detyrave në sfond 

Shpesh ka nevojë për të ekzekutuar një komandë në sfond, për të mos pritur rezultatin e ekzekutimit të saj në sesionin e shell-it. Në Windows PowerShell ka disa cmdlet-e për këtë rast:

Start-Job — aktivizimi i njĂ« detyre nĂ« sfond;
Stop-Job — ndalimi i njĂ« detyre nĂ« sfond;
Get-Job — shikimi i listĂ«s sĂ« detyrave nĂ« sfond;
Receive-Job — shikimi i rezultatit tĂ« ekzekutimit tĂ« detyrĂ«s nĂ« sfond;
Remove-Job — eliminimi i detyrĂ«s nĂ« sfond;
Wait-Job — kthimi i detyrĂ«s nĂ« sfond pĂ«rsĂ«ri nĂ« konsolĂ«.

Për të nisur një detyrë në sfond, përdorim cmdlet-in Start-Job dhe në zarfet e katrorëve tregojmë komandën ose grupin e komandave:

Start-Job {Get-Service}

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe pĂ«r çfarĂ« pĂ«rdoret? Pjesa 1: funksionalitetet kryesore
Me detyrat në sfond në Windows PowerShell mund të manipulojmë duke i ditur emrat e tyre. Së pari, le të mësojmë si t'i shfaqim ato:

Get-Job

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe pĂ«r çfarĂ« pĂ«rdoret? Pjesa 1: funksionalitetet kryesore
Tani të tregojmë rezultatin e punës së detyrës Job1:

Receive-Job Job1 | more

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe pĂ«r çfarĂ« pĂ«rdoret? Pjesa 1: funksionalitetet kryesore
E gjithë kjo është mjaft e thjeshtë.

Ekzekutimi i komandave në distancë

Windows PowerShell lejonë të ekzekutoni komanda dhe skenarë jo vetëm në kompjuterin tuaj lokal, por edhe në një kompjuter të largët dhe madje në një grup të tërë makinash. Ka disa mënyra për këtë:

  • Shumica e komandletĂ«ve kanĂ« parametrin -ComputerName, por me kĂ«tĂ« mĂ«nyrĂ« nuk mund tĂ« krijoni, pĂ«r shembull, njĂ« pipeline;
  • Komandleti Enter-PSSession lejon tĂ« krijoni njĂ« seancĂ« interaktive nĂ« makinĂ« tĂ« largĂ«t; 
  • Me komandletin Invoke-Command mund tĂ« ekzekutoni komanda ose skenarĂ« nĂ« njĂ« ose disa kompjuterĂ« tĂ« largĂ«t.

Versionet e PowerShell

Që nga lëshimi i parë në vitin 2006, PowerShell ka pësuar ndryshime të mëdha. Ky mjet është i disponueshëm për shumë sisteme që punojnë në platforma të ndryshme harduerike (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 dhe OS X. Lëshimi më i fundit 6.2 u publikua më 10 janar 2018. Skriptet e shkruara për versionet më të hershme me probabilitet të lartë do të punojnë në versionet më të reja, ndërsa për transferimin e përmbysur mund të paraqiten probleme, pasi gjatë viteve të zhvillimit në PowerShell janë shtuar shumë komandletë të rinj. Të dini versionin e shell-it të komandës të instaluar në kompjuter mund të përdorni pronën PSVersion të ndryshores së integruar $PSVersionTable:

$PSVersionTable.PSVersion

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe pĂ«r çfarĂ« pĂ«rdoret? Pjesa 1: funksionalitetet kryesore
Gjithashtu, mund të përdorni komandletin:

Get-Variable -Name PSVersionTable –ValueOnly

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe pĂ«r çfarĂ« pĂ«rdoret? Pjesa 1: funksionalitetet kryesore
E njëjta gjë bëhet dhe me komandletin Get-Host. Në të vërtetë, ka shumë mundësi, por për t'i aplikuar ato duhet të studioni gjuhën e programimit PowerShell, që do të bëjmë në artikullin e ardhshëm. 

Përfundime 

Korporata Microsoft arriti të krijojë një shell të komandës me të vërtetë të fuqishme me një ambient të integruar të zhvillimit të skenarëve. Ajo ndodhet në thelb të integruar me sistemet operative të familjes Windows, si dhe me softuerin dhe platformën .NET Core. PowerShell mund të quhet një shell e orientuar nga objekti, sepse komandletë dhe funksionet e përdoruesve kthejnë objekte ose masa objektesh dhe mund t'i pranojnë ato si input. Mendojmë se ky mjet duhet të zotërohet nga të gjithë administratorët e serverëve në Windows: ka kaluar koha kur ata mund të kalonin pa linjën e komandës. Shell-i i avancuar i konsolës është veçanërisht i nevojshëm në VPS-të tona të lira që funksionojnë nën Windows Server Core, por kjo është një histori krejt tjetër.

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe pĂ«r çfarĂ« pĂ«rdoret? Pjesa 1: funksionalitetet kryesore

Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. Hyni, ju lutem.

Cilat tema duhen trajtuar më së pari në artikujt e ardhshëm të ciklit?

  • 53,2%Programimi nĂ« PowerShell123

  • 42,4%Funksionet dhe modulat PowerShell98

  • 22,1%Si tĂ« nĂ«nshkruani skenaret tuaj?51

  • 12,1%Puna me depozitat pĂ«rmes ofruesve (providers)28

  • 57,6%Automatizimi i administratĂ«s sĂ« kompjuterĂ«ve me PowerShell133

  • 30,7%Menaxhimi i softuerit dhe integrimi i komponenteve ekzekutues PowerShell nĂ« produkte tĂ« tjera71

231 përdorues votuan. 37 përdorues u përmbajtën.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster