Što je Windows PowerShell i s čime se jede? Dio 1: Ključne značajke

Povijesno gledano, uslužni programi naredbenog retka na Unix sustavima su bolje razvijeni nego na Windowsima, ali s dolaskom novog rješenja situacija se promijenila.

Windows PowerShell omogućuje administratorima sustava da automatiziraju većinu rutinskih zadataka. Pomoću njega možete mijenjati postavke, zaustavljati i pokretati usluge, a također i održavati većinu instaliranih aplikacija. Bilo bi pogrešno percipirati plavi prozor kao još jedan tumač naredbi. Ovaj pristup ne odražava bit inovacija koje je predložio Microsoft. Zapravo, mogućnosti Windows PowerShell-a mnogo su šire: u kratkom nizu članaka pokušat ćemo shvatiti po čemu se Microsoftovo rješenje razlikuje od alata koji su nam poznatiji.

Što je Windows PowerShell i s čime se jede? Dio 1: Ključne značajke

Ključne značajke 

Naravno, Windows PowerShell prvenstveno je ljuska za skriptiranje, izvorno izgrađena na .NET Frameworku, a kasnije na .NET Coreu. Za razliku od ljuski koje prihvaćaju i vraćaju tekstualne podatke, Windows PowerShell radi s .NET klasama koje imaju svojstva i metode. PowerShell vam omogućuje pokretanje uobičajenih naredbi i također vam daje pristup COM, WMI i ADSI objektima. Koristi različite pohrane, poput datotečnog sustava ili Windows registra, za pristup kojima tzv. pružatelji usluga. Vrijedno je napomenuti mogućnost ugradnje izvršnih komponenti PowerShell u druge aplikacije za provedbu različitih operacija, uklj. putem grafičkog sučelja. Vrijedi i obrnuto: mnoge Windows aplikacije omogućuju pristup svojim upravljačkim sučeljima putem PowerShell-a. 

Windows PowerShell vam omogućuje da:

  • Promjena postavki operativnog sustava;
  • Upravljanje uslugama i procesima;
  • Konfigurirajte uloge i komponente poslužitelja;
  • Instalirajte softver;
  • Upravljanje instaliranim softverom putem posebnih sučelja;
  • Ugraditi izvršne komponente u programe trećih strana;
  • Stvorite skripte za automatizaciju administrativnih zadataka;
  • Rad s datotečnim sustavom, Windows registrom, spremištem certifikata itd.

Školjka i razvojno okruženje

Windows PowerShell postoji u dva oblika: uz emulator konzole s naredbenom ljuskom, postoji Integrirano okruženje za skriptiranje (ISE). Za pristup sučelju naredbenog retka jednostavno odaberite odgovarajući prečac iz Windows izbornika ili pokrenite powershell.exe iz Run izbornika. Na ekranu će se pojaviti plavi prozor, primjetno drugačiji u mogućnostima od pretpotopnog cmd.exe. Postoji automatsko dovršavanje i druge značajke poznate korisnicima naredbenih ljuski za Unix sustave.

Što je Windows PowerShell i s čime se jede? Dio 1: Ključne značajke

Za rad s ljuskom morate zapamtiti neke tipkovničke prečace:

  • Strelice gore i dolje pomiču se kroz povijest za ponavljanje prethodno upisanih naredbi;
  • Desna strelica na kraju retka ponovno upisuje prethodnu naredbu znak po znak;
  • Ctrl+Home briše upisani tekst od položaja kursora do početka retka;
  • Ctrl+End briše tekst od pokazivača do kraja retka.

F7 prikazuje prozor s unesenim naredbama i omogućuje odabir jedne od njih. Konzola također radi s odabirom teksta mišem, copy-pasteom, pozicioniranjem kursora, brisanjem, backspaceom - sve što volimo.

Što je Windows PowerShell i s čime se jede? Dio 1: Ključne značajke
Windows PowerShell ISE cjelovito je razvojno okruženje s uređivačem koda s karticama i sintaksom, alatom za izgradnju naredbi, ugrađenim programom za ispravljanje pogrešaka i drugim programerskim užicima. Ako iza naziva naredbe u uređivaču razvojnog okruženja napišete crticu, na padajućem popisu dobit ćete sve dostupne opcije s naznakom tipa. PowerShell ISE možete pokrenuti putem prečaca iz izbornika sustava ili pomoću izvršne datoteke powershell_ise.exe.

Što je Windows PowerShell i s čime se jede? Dio 1: Ključne značajke

Cmdlets 

U Windows PowerShell tzv. cmdleti. To su specijalizirane .NET klase koje pružaju različite funkcionalnosti. Nazivaju se radnja-objekt (ili glagol-imenica, ako vam se više sviđa), a poveznica odvojena crticom nalikuje predikatu i subjektu u rečenicama prirodnog jezika. Na primjer, Get-Help doslovno znači "Get-Help", ili u PowerShell kontekstu: "Show-Help". Zapravo, ovo je analog naredbe man u Unix sustavima, a priručnike u PowerShell-u morate tražiti na ovaj način, a ne pozivanjem cmdleta s tipkom --help ili /?. Ne zaboravite na online PowerShell dokumentaciju: Microsoft ga ima prilično detaljno.

Uz Get, cmdleti koriste i druge glagole za označavanje radnji (i ne samo glagole, strogo govoreći). Na donjem popisu dajemo neke primjere:

Add - dodati;
Clear - čisto;
Enable - upaliti;
Disable - isključi;
New - stvoriti;
Remove - izbrisati;
Set - pitati;
Start - trčanje;
Stop - zaustaviti se;
Export - izvoz;
Import - uvoz.

Postoje sistemski, korisnički i izborni cmdleti: kao rezultat izvršenja svi oni vraćaju objekt ili niz objekata. Ne razlikuju velika i mala slova, tj. sa stajališta tumača naredbi, nema razlike između Get-Help i get-help. Za razdvajanje se koristi znak ';', ali ga je obavezno staviti samo ako se u istom retku izvršava više cmdleta. 

Windows PowerShell cmdlet grupirani su u module (NetTCPIP, Hyper-V, itd.), a tu je i Get-Command cmdlet za pretraživanje prema objektu i radnji. Pomoć za njega možete prikazati ovako:

Get-Help Get-Command

Što je Windows PowerShell i s čime se jede? Dio 1: Ključne značajke

Prema zadanim postavkama, naredba prikazuje kratku pomoć, ali parametri (argumenti) se prema potrebi prosljeđuju cmdletima. Uz njihovu pomoć možete, na primjer, dobiti detaljnu (parametar -Detailed) ili potpunu (parametar -Full) pomoć, kao i prikazati primjere (parametar -Examples):

Get-Help Get-Command -Examples

Pomoć u Windows PowerShell ažurira se cmdlet-om Update-Help. Ako se naredbeni redak pokaže predugačkim, argumenti cmdleta mogu se premjestiti na sljedeći upisivanjem servisnog znaka "`" i pritiskom na Enter - jednostavno završiti pisanje naredbe u jednom retku i nastaviti u drugom neće funkcionirati.

Evo nekoliko primjera uobičajenih cmdleta: 

Get-Process - prikazati pokrenute procese u sustavu;
Get-Service — prikazati usluge i njihov status;
Get-Content — prikazati sadržaj datoteke.

Za često korištene cmdlete i vanjske uslužne programe, Windows PowerShell ima kratke sinonime - aliase (od engleskog. Alias). Na primjer, dir je alias za Get-ChildItem. Popis sinonima uključuje i analogije naredbi iz Unix sustava (ls, ps itd.), a cmdlet Get-Help poziva se naredbom help. Potpuni popis sinonima može se vidjeti pomoću cmdleta Get-Alias ​​​​:

Što je Windows PowerShell i s čime se jede? Dio 1: Ključne značajke

PowerShell skripte, funkcije, moduli i jezik

Skripte Windows PowerShell pohranjuju se kao obične tekstualne datoteke s nastavkom .ps1. Ne možete ih pokrenuti dvostrukim klikom: morate desnom tipkom miša pozvati kontekstni izbornik i odabrati stavku "Pokreni u PowerShell". Iz konzole ćete morati navesti punu stazu do skripte ili otići u odgovarajući direktorij i napisati naziv datoteke. Pokretanje skripti također je ograničeno pravilima sustava, a za provjeru trenutnih postavki možete koristiti cmdlet Get-ExecutionPolicy koji će vratiti jednu od sljedećih vrijednosti:

Restricted — pokretanje skripti je onemogućeno (prema zadanim postavkama);
AllSigned — dopušteno je pokretanje samo skripti koje je potpisao pouzdani programer;
RemoteSigned - dopušteno pokretanje potpisanih i vlastitih skripti;
Unrestricted - dopušteno pokretanje bilo koje skripte.

Administrator ima dvije mogućnosti. Najsigurnije uključuje potpisivanje skripti, ali ovo je prilično ozbiljna čarolija - bavit ćemo se njome u narednim člancima. Krenimo sada putem manjeg otpora i promijenimo politiku:

Set-ExecutionPolicy RemoteSigned

Što je Windows PowerShell i s čime se jede? Dio 1: Ključne značajke
PowerShell će se morati pokrenuti kao administrator da biste to učinili, iako možete promijeniti pravilo za trenutnog korisnika posebnom postavkom.

Skripte su napisane u objektno orijentiranom programskom jeziku, čije su naredbe imenovane prema istom principu kao i ranije razmatrani cmdleti: "Akcija-objekt" ("Glagol-imenica"). Njegova glavna svrha je automatizacija administrativnih zadataka, ali to je potpuni interpretirani jezik koji ima sve potrebne konstrukcije: uvjetni skok, petlje, varijable, nizove, objekte, rukovanje pogreškama itd. Svaki uređivač teksta je dobar za skriptiranje, ali najbolje je pokrenuti Windows PowerShell ISE.

Parametre možete proslijediti skripti, učiniti ih obaveznima i postaviti zadane vrijednosti. Osim toga, Windows PowerShell omogućuje stvaranje i pozivanje funkcija na isti način kao i cmdleti, korištenjem konstrukcije Function i vitičastih zagrada. Skripta s funkcijama naziva se modul i ima ekstenziju .psm1. Moduli moraju biti pohranjeni u direktorije definirane u varijablama okruženja PowerShell. Možete ih vidjeti pomoću sljedeće naredbe:

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

konvejer

U posljednjem primjeru koristili smo konstrukciju koja je poznata korisnicima Unix ljuske. U Windows PowerShell, okomita traka također vam omogućuje da prenesete izlaz jedne naredbe na ulaz druge, ali postoji značajna razlika u implementaciji cjevovoda: više ne govorimo o skupu znakova ili nekoj vrsti tekst. Ugrađeni cmdleti ili korisnički definirane funkcije vraćaju objekte ili nizove objekata, a mogu ih i primiti kao unos. Poput Bourneove ljuske i njezinih mnogih nasljednika, PowerShell olakšava složene zadatke s cjevovodom.

Najjednostavniji primjer cjevovoda izgleda ovako:

Get-Service | Sort-Object -property Status

Što je Windows PowerShell i s čime se jede? Dio 1: Ključne značajke
Prvo se izvršava cmdlet Get-Service, a zatim se sve primljene usluge prosljeđuju cmdletu Sort-Object za sortiranje prema svojstvu Status. Koji argument se prosljeđuje rezultat prethodnog odjeljka cjevovoda ovisi o njegovom tipu - obično je to InputObject. O ovom pitanju će se detaljnije govoriti u članku posvećenom programskom jeziku PowerShell. 

Ako želite, možete nastaviti lanac i proslijediti rezultat operacije Sort-Object drugom cmdlet-u (izvodit će se slijeva na desno). Usput, Windows korisnici također imaju pristup konstrukciji za paginaciju poznatoj svim Unixoidima: 

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

Pokretanje zadataka u pozadini 

Nerijetko je potrebno pokrenuti određenu naredbu u pozadini, kako se ne bi čekao rezultat njezina izvođenja u sesiji ljuske. Windows PowerShell ima nekoliko cmdleta za ovaj slučaj:

Start-Job - pokretanje pozadinskog zadatka;
Stop-Job — zaustaviti pozadinski zadatak;
Get-Job — pregled popisa pozadinskih zadataka;
Receive-Job — pregled rezultata izvršavanja pozadinskog zadatka;
Remove-Job — brisanje pozadinskog zadatka;
Wait-Job - prijenos pozadinskog zadatka natrag na konzolu.

Za pokretanje pozadinskog zadatka koristimo cmdlet Start-Job i navodimo naredbu ili skup naredbi u vitičastim zagradama:

Start-Job {Get-Service}

Što je Windows PowerShell i s čime se jede? Dio 1: Ključne značajke
Pozadinskim zadacima u Windows PowerShell može se manipulirati tako da se znaju njihova imena. Prvo, naučimo kako ih prikazati:

Get-Job

Što je Windows PowerShell i s čime se jede? Dio 1: Ključne značajke
Sada pokažimo rezultat posla Job1:

Receive-Job Job1 | more

Što je Windows PowerShell i s čime se jede? Dio 1: Ključne značajke
Sve je prilično jednostavno.

Daljinsko izvršenje naredbi

Windows PowerShell vam omogućuje izvršavanje naredbi i skripti ne samo na lokalnom računalu, već i na udaljenom računalu, pa čak i na cijeloj grupi strojeva. Postoji nekoliko načina za to:

  • Mnogi cmdleti imaju parametar -ComputerName, ali na taj način neće uspjeti, na primjer, stvoriti transporter;
  • Cmdlet Enter-PSSession omogućuje vam stvaranje interaktivne sesije na udaljenom računalu; 
  • Korištenje cmdleta Invoke-Command možete pokretati naredbe ili skripte na jednom ili više udaljenih računala.

Verzije PowerShell-a

PowerShell se dosta promijenio od svog prvog izdanja 2006. godine. Alat je dostupan za mnoge sustave koji rade na različitim hardverskim platformama (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 i OS X. Najnovije izdanje 6.2 objavljeno je 10. siječnja 2018. Skripte napisane za ranije verzije vjerojatno će raditi u kasnijim verzijama, ali backporting može biti problematičan jer je PowerShell uveo velik broj novih cmdleta tijekom godina razvoja. Možete saznati verziju naredbene ljuske instalirane na računalu pomoću svojstva PSVersion ugrađene varijable $PSVersionTable:

$PSVersionTable.PSVersion

Što je Windows PowerShell i s čime se jede? Dio 1: Ključne značajke
Također možete koristiti cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

Što je Windows PowerShell i s čime se jede? Dio 1: Ključne značajke
Isto se radi s cmdlet Get-Host. Zapravo, postoji mnogo opcija, ali da biste ih koristili morate naučiti programski jezik PowerShell, što ćemo učiniti u sljedeći članak

Rezultati 

Microsoft je uspio stvoriti stvarno moćnu ljusku s prikladnim integriranim okruženjem za razvoj skripti. Razlikuje se od nama poznatih alata u svijetu Unixa po dubokoj integraciji s operativnim sustavima Windows obitelji, kao i sa softverom za njih i .NET Core platformom. PowerShell se može nazvati objektno orijentiranom ljuskom jer cmdleti i korisnički definirane funkcije vraćaju objekte ili nizove objekata i mogu ih uzeti kao ulaz. Mislimo da bi svi administratori poslužitelja na Windowsima trebali posjedovati ovaj alat: prošlo je vrijeme kada su mogli bez naredbenog retka. Napredna ljuska konzole posebno je potrebna na naš jeftini VPS koji pokreće Windows Server Core, ali to je sasvim druga priča.

Što je Windows PowerShell i s čime se jede? Dio 1: Ključne značajke

U anketi mogu sudjelovati samo registrirani korisnici. Prijaviti se, molim.

Koje bi teme trebale biti prve obrađene u sljedećim člancima u nizu?

  • 53,2%Programiranje u PowerShell-u123

  • 42,4%PowerShell98 funkcije i moduli

  • 22,1%Kako potpisati vlastite skripte?51

  • 12,1%Rad s repozitorijima preko providera (provajdera)28

  • 57,6%Automatiziranje računalne administracije s PowerShell-om133

  • 30,7%Upravljanje softverom i ugradnja PowerShell izvršnih datoteka u proizvode trećih strana71

Glasovao je 231 korisnik. Suzdržano je bilo 37 korisnika.

Izvor: www.habr.com

Dodajte komentar