Historikisht, utilitat e komandave në sistemet Unix janë zhvilluar më mirë se në Windows, megjithatë, me shfaqjen e zgjidhjeve të reja, situata ka ndryshuar.
Windows PowerShell u lejon administratorëve të sistemeve mundëson automatizimin e shumicës së 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ë perceptoni dritaren blu si një interpretues tjetër komandash do të ishte gabim. 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ë përpiqemi të zbulojmë se si zgjidhja e Microsoft-it ndryshon nga mjetet më të njohura për ne.
PĂ«rgjegjĂ«si kryesoreÂ
Natyrisht, Windows PowerShell Ă«shtĂ« para sĂ« gjithash njĂ« shell komandash me njĂ« gjuhĂ« skenarĂ«sh, fillimisht e krijuar mbi platformĂ«n .NET Framework, e mĂ« pas mbi .NET Core. NĂ« dallim nga shell-et qĂ« pranojnĂ« dhe kthejnĂ« tĂ« dhĂ«na tekstuale, Windows PowerShell punon me klasat .NET, tĂ« cilat kanĂ« pronĂ«si dhe metoda. PowerShell lejon ekzekutimin e komandave tĂ« zakonshme, si dhe ofron qasje nĂ« objekte COM, WMI dhe ADSI. NĂ« tĂ« pĂ«rdoren depo tĂ« ndryshme, si sistemi i skedarĂ«ve ose regjistri i Windows, pĂ«r tĂ« cilat janĂ« krijuar shpallĂ«sit (providers). Vlen tĂ« pĂ«rmendet mundĂ«sia e integrimit tĂ« komponentĂ«ve ekzekutivĂ« tĂ« PowerShell nĂ« aplikacione tĂ« tjera pĂ«r tĂ« realizuar operacione tĂ« ndryshme, pĂ«rfshirĂ« pĂ«rmes ndĂ«rfaqes grafike. E njĂ«jta Ă«shtĂ« e vĂ«rtetĂ« nĂ« anĂ«n tjetĂ«r: shumĂ« aplikacione pĂ«r Windows ofrojnĂ« qasje nĂ« ndĂ«rfaqet e tyre tĂ« menaxhimit pĂ«rmes PowerShell.Â
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 software;
- Të menaxhoni softuerin e instaluar përmes ndërfaqeve speciale;
- Të integroni komponentët ekzekutivë në programe të huaja;
- 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
Windows PowerShell ekziston në dy forma: përveç emulatorit të konsolës me shell komandash, ka një mjedis të integruar skenarësh (Integrated Scripting Environment - ISE). Për të aksesuar ndërfaqen e komandave, mjafton të zgjidhni ikonën përkatëse në menunë e Windows ose të nisni powershell.exe nga menuja 'Run'. Në ekran do të shfaqet një dritare blu, dukshëm më e avancuar se e vjetra cmd.exe. Aty ka auto-sugjerim dhe tipare të tjera, të njohura për përdoruesit e shell-eve komandash për sistemet Unix.

Për të punuar me shell-in duhet të mbani mend disa kombinime çelësish:
- ĂelĂ«sat lart dhe poshtĂ« rrokullisin historinĂ« pĂ«r tĂ« pĂ«rsĂ«ritur komandat e mĂ«parshme;
- ĂelĂ«si i djathtĂ« nĂ« fund tĂ« rreshtit ri-shkruan rendin e mĂ«parshĂ«m karakter pĂ«r karakter;
- Ctrl+Home fshin tekstin e shkruar nga pozita e kursorit deri në fillimin e rreshtit;
- Ctrl+End fshin tekstin nga kursor deri në fundin e rreshtit.
F7 tregon një dritare me komandat e shkruara dhe lejon të zgjidhni një prej tyre. Në konsolë gjithashtu funksionon seleksioni i tekstit me miun, kopjimi dhe ngjitja, pozicionimi i kursorit, fshirja, backspace - të gjitha siç na pëlqen.

Windows PowerShell ISE është një mjedis zhvillimi i plotë me një editor kodi që mbështet skedarët dhe theksimin e sintaksës, ndërtuesin e komandave, një debugues të integruar, dhe kënaqësi të tjera për programuesit. Nëse në redaktorin e mjedisit të zhvillimit pas emrit të komandës shkruani shenjën e defis, do të merrni në listën e rënë të gjitha parametrat e disponueshëm me tregimin e tipit. Të nisni PowerShell ISE mund të bëni ose përmes ikonës nga menuja e sistemit, ose me ndihmën e skedarit ekzekutiv powershell_ise.exe.

CmdletsÂ
Në Windows PowerShell janë shfaqur cmdlet-e. Këto janë klasa të specializuara .NET, të cilat përmbajnë funksionalitete të ndryshme. Ato quhen sipas parimit 'Veprim-Objekt' (ose 'Folja-Përgjigje', nëse ju pëlqen më shumë), dhe lidhja e ndarë me defis i ngjan predikates dhe subjektit në fjalitë e gjuhëve natyrore. Për shembull, Get-Help do të thotë në të vërtetë 'Merr-Pomoc' ose në kontekstin e PowerShell: 'Trego-Pomoc'. Në thelb, kjo është analogjia e komandës man në sistemet Unix, dhe manualet në PowerShell duhet të kërkohen pikërisht kështu, e jo duke thirrur cmdlet-et me çelësin --help ose /?.. Mos harroni gjithashtu dokumentacionin online për PowerShell: ai është mjaft i detajuar nga Microsoft.
Përveç Get, në cmdlets përdoren edhe folje të tjera për të treguar veprimet (dhe jo vetëm folje, në mënyrë strikte). Në listën më poshtë do të paraqesim disa shembuj:
Shto â shtoni;
Pastroni â pastroni;
Enable â aktivizoni;
Disable â çaktivizoni;
E Re â krijoni;
Remove â fshini;
Set â caktoni;
Start â nisni;
Stop â ndaloni;
Eksport â eksportoni;
Importo â importoni.
Ka janĂ« komandleta sistematike, pĂ«rdoruesve dhe opsionale: si rezultat i ekzekutimit tĂ« tyre, tĂ« gjitha kthejnĂ« njĂ« objekt ose njĂ« array objektesh. Ato nuk janĂ« tĂ« ndjeshme ndaj ndjeshmĂ«risĂ« sĂ« shkronjave, dmth, pĂ«r interpretuesin e komandave nuk ka dallim midis Get-Help dhe get-help. Simboli ';' pĂ«rdoret pĂ«r ndarjen, por duhet vendosur vetĂ«m nĂ«se nĂ« njĂ« rresht ekzekutohen disa komandleta.Â
Komandletat e Windows PowerShell grupohen në module (si NetTCPIP, Hyper-V etj), dhe për të kërkuar nëpërmjet objektit dhe veprimit ekziston komandleta Get-Command. Mund ta shfaqni ndihmën për të kështu:
Get-Help Get-Command 
Si default, komanda shfaq një ndihmë të shkurtër, por komandletat mund të kalojnë parametra (argumente) sipas nevojës. Me to, për shembull, mund të merrni ndihmë të detajuar (parametri -Detailed) ose të plotë (parametri -Full), si dhe të shfaqni shembuj në ekran (parametri -Examples):
Get-Help Get-Command -ExamplesNdihma nĂ« Windows PowerShell pĂ«rditĂ«sohet me komandletĂ«n Update-Help. NĂ«se linja e komandĂ«s bĂ«het shumĂ« e gjatĂ«, argumentet e komandletĂ«s mund tĂ« transferohen nĂ« rreshtin tjetĂ«r, duke shkruar simbolin e shĂ«rbimeve â`â dhe duke shtypur Enter â thjesht pĂ«rfundimi i komandĂ«s nĂ« njĂ« linjĂ« dhe vazhdimi nĂ« tjetrĂ«n nuk do tĂ« funksionojĂ«.
MĂ« poshtĂ« do tĂ« japim disa shembuj tĂ« zakonshĂ«m tĂ« komandletave:Â
Get-Process â shfaq proceset e ekzekutuar nĂ« sistem;
Get-Service â shfaq shĂ«rbimet dhe statusin e tyre;
Get-Content â shfaq pĂ«rmbajtjen e skedarit.
PĂ«r komandletat e pĂ«rdorura shpesh dhe utilitetet e jashtme nĂ« Windows PowerShell ekzistojnĂ« sinonime tĂ« shkurtra â alias (nga anglishtja Alias). PĂ«r shembull, dir â alias pĂ«r Get-ChildItem. NĂ« listĂ«n e sinonimeve gjenden gjithashtu ekvivalente pĂ«r komandat nga sistemet Unix (si ls, ps etj), dhe komandleta Get-Help thirret nga komanda help. Lista e plotĂ« e sinonimeve mund tĂ« shikohet me komandletĂ«n Get-Alias:

Skemat, funksionet, modulat dhe gjuha PowerShell
Skripted e Windows PowerShell ruhet si skedarë të zakonshëm teksti me prapashtesë .ps1. Nuk mund të nisen me një klik të dyfishtë: duhet thjesht të klikoni me të djathtën për të thirrur menu kontekstuale dhe të zgjidhni opsionin "Ekzekuto në PowerShell". Nga konsola, duhet ose të tregoni rrugën e plotë për skedarin, ose të kaloni në katalogun përkatës dhe të shkruani emrin e skedarit. Ekzekutimi i skemave gjithashtu kufizohet nga politika sistematike, dhe për të kontrolluar cilësimet aktuale, mund të përdorni komandletën Get-ExecutionPolicy, e cila do të kthejë një nga këto vlera:
Restricted â ekzekutimi i skemave Ă«shtĂ« i ndaluar (si default);
AllSigned â lejohet vetĂ«m ekzekutimi i skemave tĂ« nĂ«nshkruara nga njĂ« zhvillues tĂ« besuar;
RemoteSigned â lejohet ekzekutimi i skemave tĂ« nĂ«nshkruara dhe tĂ« atyre tĂ« vetat;
Unrestricted â lejohet ekzekutimi i çdo skeme.
Administratori ka dy opsione. MĂ« e sigurt do tĂ« ishte nĂ«nshkrimi i skemave, por kjo Ă«shtĂ« njĂ« magji e rĂ«ndĂ« â do tĂ« merremi me tĂ« nĂ« artikujt e ardhshĂ«m. PĂ«r tani do tĂ« ndjekim rrugĂ«n e rezistencĂ«s mĂ« tĂ« vogĂ«l dhe do tĂ« ndryshojmĂ« politikĂ«n:
Set-ExecutionPolicy RemoteSigned 
PowerShell për këtë duhet të ekzekutohet si administrator, megjithatë me një parametër të veçantë mund të ndryshoni politikën edhe për përdoruesin aktual.
Skripted shkruhen në një gjuhë programimi të orientuar në objekte, komandat e të cilit emërtohen sipas të njëjtit parim si komandletat e shqyrtuara më parë: "Veprimi-Objekti" ("Folja-Nominal"). Qëllimi i saj kryesor është automatizimi i detyrave të administratës, por është një gjuhë e plotë interpretuese, e cila ka të gjitha konstruksionet e nevojshme: kalime kushtore, cikle, variabla, arrays, objekte, përpunim gabimesh etj. Mund të përdorim çdo redaktues teksti për të shkruar skema, por më e përshtatshme është të përdorim Windows PowerShell ISE.
NĂ« skemĂ« mund tĂ« kaloni parametra, tâi bĂ«ni ata tĂ« domosdoshĂ«m, dhe gjithashtu tĂ« caktoni vlera tĂ« paracaktuara. PĂ«r mĂ« tepĂ«r, Windows PowerShell ju lejon tĂ« krijoni funksione dhe tâi thirrni ato nĂ« tĂ« njĂ«jtĂ«n mĂ«nyrĂ« si komandletat: pĂ«r kĂ«tĂ« pĂ«rdoret konstrukti Function dhe kllapat e dĂ«rrasĂ«s. NjĂ« skemĂ« me funksione quhet modul dhe ka prapashtesĂ«n .psm1. ModulĂ«t duhet tĂ« ruhet nĂ« katalogjet e pĂ«rcaktuara nĂ« variablat e ambientit PowerShell. Mund t'i shihni ato me komandĂ«n nĂ« vijim:
Get-ChildItem Env:PSModulePath | Format-Table -AutoSizePipelining
Në shembullin e fundit, ne aplikuam një strukturë të njohur për përdoruesit e shell-ave të sistemeve Unix. Në Windows PowerShell, shenjë vertikale gjithashtu lejon kalimin e daljes së një komande në hyrjen e një tjeter, por në implementimin e tubacionit ka një diferencë thelbësore: ky rast nuk është thjesht për një set simbolesh apo ndonjë tekst. Komandlet e ndërtuar ose funksionet e përdoruesit kthejnë objekte ose grupe objektesh dhe gjithashtu mund t'i marrin ato si hyrje. Si në Bourne shell dhe pasardhësit e tij të shumtë, në PowerShell me ndihmën e tubacionit lehtësohet kryerja e detyrave komplekse.
Shembulli më i thjeshtë i tubacionit duket kështu:
Get-Service | Sort-Object -property Status 
SĂ« pari ekzekutohet komandleti Get-Service, dhe pastaj tĂ« gjitha shĂ«rbimet e marra kalohen pĂ«r t'u renditur sipas pronĂ«s Status nga komandleti Sort-Object. NĂ« cilin argument kalon rezultatin e punĂ«s sĂ« pjesĂ«s sĂ« mĂ«parshme tĂ« tubacionit varet nga tipi i saj â zakonisht Ă«shtĂ« InputObject. Kjo çështje do tĂ« shqyrtohet mĂ« nĂ« detaje nĂ« njĂ« artikull tĂ« dedikuar pĂ«r gjuhĂ«n e programimit PowerShell.Â
NĂ«se dĂ«shirojmĂ«, mund tĂ« vazhdojmĂ« zinxhirin dhe tĂ« kalojmĂ« rezultatin e punĂ«s sĂ« Sort-Object nĂ« njĂ« komandlet tjetĂ«r (ato do tĂ« ekzekutohen nga majtas nĂ« djathtas). PĂ«r mĂ« tepĂ«r, pĂ«rdoruesit e Windows kanĂ« nĂ« dispozicion edhe strukturĂ«n e njohur pĂ«r nxjerrjen faqĂ«sore:Â
Get-Service | Sort-Object -property Status | morePĂ«rgjegjĂ«sia e ekzekutimit tĂ« detyrave nĂ« sfondÂ
Shpesh është e nevojshme të ekzekutohet një komandë në sfond, në mënyrë që të mos pritet rezultati i ekzekutimit të saj në seancën e shell-it. Në Windows PowerShell ka disa komandlete për këtë rast:
Start-Job â fillimi 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 â fshirja e detyrĂ«s nĂ« sfond;
Wait-Job â kthimi i detyrĂ«s nĂ« sfond prapa nĂ« konsolĂ«.
Për të filluar një detyrë në sfond, përdorim komandlet Start-Job dhe në kllapat e katërta shënojmë komandën ose grupin e komandave:
Start-Job {Get-Service} 
Me detyrat në sfond në Windows PowerShell mund të manovrohet duke ditur emrat e tyre. Në fillim të mësojmë t'i shohim ato:
Get-Job 
Tani do të tregojmë rezultatin e punës së detyrës Job1:
Receive-Job Job1 | more 
E gjitha është mjaft e thjeshtë.
Ekzekutimi i komandave në distancë
Windows PowerShell lejon ekzekutimin e komandave dhe skenareve jo vetëm në kompjuterin lokal, por edhe në një kompjuter të largët dhe madje në një grup të tërë makinash. Për këtë ekzistojnë disa mënyra:
- Shumë komandlete kanë parametrin
-ComputerName, por me këtë metodë nuk është e mundur, për shembull, të krijoni një tubacion; - Komandleti
Enter-PSSessionlejon krijimin e një seance interaktive në makinën e largët; - Me ndihmën e komandlet
Invoke-Commandmund të ekzekutoni komanda ose skenare në një ose disa kompjuterë të largët.
Versionet e PowerShell
Që nga lëshimi i parë në vitin 2006, PowerShell ka ndryshuar ndjeshëm. Ky mjet është në dispozicion për shumë sisteme që funksionojnë 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 shumë gjasa do të funksionojnë në versionet më të reja, por me transferimin prapa mund të ketë probleme, pasi gjatë viteve zhvillimi në PowerShell ka sjellë shumë komandlete të reja. Të dish versionin e shell-it të komandave të instaluar në kompjuterin tuaj mund të bëhet me ndihmën e pronës PSVersion të variablit të brendshëm $PSVersionTable:
$PSVersionTable.PSVersion 
Gjithashtu mund të përdorim komandlet:
Get-Variable -Name PSVersionTable âValueOnly 
E njĂ«jta gjĂ« bĂ«het edhe me komandlet Get-Host. NĂ« realitet, ka njĂ« mori opsionesh, por pĂ«r t'i pĂ«rdorur ato nevojitet tĂ« studiohet gjuha e programimit PowerShell, gjĂ« qĂ« do tĂ« bĂ«jmĂ« nĂ« .Â
PĂ«rfundimetÂ
Korporata Microsoft ka arritur të krijojë një shell komandash të vërtetë të fuqishme me një mjedis të integruar të rekrutimit të skenareve. Nga mjetet e njohura për ne në botën Unix, ajo karakterizohet nga një integrim i thellë me sistemet operative të familjes Windows, si dhe me softuerin për to dhe platformën .NET Core. PowerShell mund të quhet një shell e orientuar në objekte, sepse komandlet dhe funksionet e përdoruesit kthejnë objekte ose grupe objektesh dhe mund t'i marrin ato si hyrje. Mendojmë se ky mjet duhet të zotërohet nga të gjithë administratorët e serverave në Windows: ka kaluar koha kur ata mund të kalonin pa shell-in e komandave. Një konsolë e avancuar është veçanërisht e nevojshme në , por kjo është një histori krejt tjetër.
Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. , ju lutemi.
Cilat tema duhet të trajtohen si prioritet në artikujt e ardhshëm të ciklit?
53,2%Programimi në PowerShell123
42,4%Funksionet dhe modulat PowerShell98
22,1%Si të nënshkruani skriptet tuaja?
12,1%Puna me ruajtjet përmes ofruesve
57,6%Automatizimi i administratës së kompjuterëve me PowerShell
30,7%Menaxhimi i software-it dhe integrimi i komponentëve ekzekutivë PowerShell në produkte të jashtme
231 përdorues kanë votuar. 37 përdorues kanë abstenuar.
Burimi: habr.com
