ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe çfarĂ« ndodh me tĂ«? Pjesa 1: funksionalitetet kryesore

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.

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe çfarĂ« ndodh me tĂ«? Pjesa 1: funksionalitetet kryesore

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.

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe çfarĂ« ndodh me tĂ«? Pjesa 1: funksionalitetet kryesore

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.

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe çfarĂ« ndodh me tĂ«? Pjesa 1: funksionalitetet kryesore
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.

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe çfarĂ« ndodh me tĂ«? Pjesa 1: funksionalitetet kryesore

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

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe çfarĂ« ndodh me tĂ«? Pjesa 1: funksionalitetet kryesore

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

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

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe çfarĂ« ndodh me tĂ«? Pjesa 1: funksionalitetet kryesore

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

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe çfarĂ« ndodh me tĂ«? Pjesa 1: funksionalitetet kryesore
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 -AutoSize

Pipelining

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

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe çfarĂ« ndodh me tĂ«? Pjesa 1: funksionalitetet kryesore
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 | more

Pë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}

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe çfarĂ« ndodh me tĂ«? Pjesa 1: funksionalitetet kryesore
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

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

Receive-Job Job1 | more

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe çfarĂ« ndodh me tĂ«? Pjesa 1: funksionalitetet kryesore
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-PSSession lejon krijimin e njĂ« seance interaktive nĂ« makinĂ«n e largĂ«t; 
  • Me ndihmĂ«n e komandlet Invoke-Command mund 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

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe çfarĂ« ndodh me tĂ«? Pjesa 1: funksionalitetet kryesore
Gjithashtu mund të përdorim komandlet:

Get-Variable -Name PSVersionTable –ValueOnly

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe çfarĂ« ndodh me tĂ«? Pjesa 1: funksionalitetet kryesore
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ë artikullin e ardhshëm. 

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ë VPS-të tona të përballueshme që operojnë nën Windows Server Core, por kjo është një histori krejt tjetër.

ÇfarĂ« Ă«shtĂ« Windows PowerShell dhe çfarĂ« ndodh me tĂ«? Pjesa 1: funksionalitetet kryesore

Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. Hyni, 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

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