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

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.

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.

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 
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 -ExamplesNdihma 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:

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 
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 -AutoSizeKongjellat
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 
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 | moreEkzekutimi 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} 
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 
Tani të tregojmë rezultatin e punës së detyrës Job1:
Receive-Job Job1 | more 
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-PSSessionlejon të krijoni një seancë interaktive në makinë të largët; - Me komandletin
Invoke-Commandmund 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 
Gjithashtu, mund të përdorni komandletin:
Get-Variable -Name PSVersionTable âValueOnly 
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Ă« .Â
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ë , por kjo është një histori krejt tjetër.
Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. , 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
