Šta je Windows PowerShell i sa čime se jede? Dio 1: Ključne karakteristike

Istorijski gledano, uslužni programi komandne linije na Unix sistemima su bolje razvijeni nego na Windows-u, ali sa pojavom novog rešenja, situacija se promenila.

Windows PowerShell omogućava administratorima sistema da automatizuju većinu rutinskih zadataka. Pomoću njega možete mijenjati postavke, zaustavljati i pokretati usluge, kao i obavljati održavanje većine instaliranih aplikacija. Bilo bi pogrešno percipirati plavi prozor kao drugi tumač komandi. Ovaj pristup ne odražava suštinu inovacija koje je predložio Microsoft. U stvari, mogućnosti Windows PowerShell-a su mnogo šire: u kratkoj seriji članaka pokušaćemo da shvatimo po čemu se Microsoft rešenje razlikuje od alata koji su nam poznatiji.

Šta je Windows PowerShell i sa čime se jede? Dio 1: Ključne karakteristike

Ključne karakteristike 

Naravno, Windows PowerShell je prvenstveno školjka za skriptiranje, prvobitno izgrađena na .NET Frameworku, a kasnije na .NET Core. Za razliku od ljuski koje prihvataju i vraćaju tekstualne podatke, Windows PowerShell radi sa .NET klasama koje imaju svojstva i metode. PowerShell vam omogućava pokretanje uobičajenih naredbi i također vam daje pristup COM, WMI i ADSI objektima. Koristi razna skladišta, poput sistema datoteka ili Windows registra, za pristup kojima se koriste tzv. dobavljači. Vrijedi napomenuti mogućnost ugrađivanja izvršnih komponenti PowerShell u druge aplikacije za implementaciju različitih operacija, uklj. preko grafičkog interfejsa. Važi i obrnuto: mnoge Windows aplikacije omogućavaju pristup svojim upravljačkim interfejsima preko PowerShell-a. 

Windows PowerShell vam omogućava da:

  • Promjena postavki operativnog sistema;
  • Upravljanje uslugama i procesima;
  • Konfigurirajte uloge i komponente servera;
  • Instalirajte softver;
  • Upravljanje instaliranim softverom putem posebnih sučelja;
  • Ugradite izvršne komponente u programe trećih strana;
  • Kreirajte skripte za automatizaciju administrativnih zadataka;
  • Rad sa sistemom datoteka, Windows registrom, skladištem certifikata itd.

Shell i razvojno okruženje

Windows PowerShell postoji u dva oblika: pored emulatora konzole sa komandnom ljuskom, postoji i Integrisano okruženje za skriptovanje (ISE). Da biste pristupili interfejsu komandne linije, jednostavno izaberite odgovarajuću prečicu iz Windows menija ili pokrenite powershell.exe iz menija Pokreni. Na ekranu će se pojaviti plavi prozor, koji se značajno razlikuje po mogućnostima od antipotopnog cmd.exe. Postoji automatsko dovršavanje i druge karakteristike poznate korisnicima komandnih školjki za Unix sisteme.

Šta je Windows PowerShell i sa čime se jede? Dio 1: Ključne karakteristike

Za rad sa ljuskom morate zapamtiti neke prečice na tastaturi:

  • Strelice nagore i nadole skroluju kroz istoriju da bi ponovile prethodno ukucane komande;
  • Desna strelica na kraju reda ponovo upisuje prethodnu komandu znak po znak;
  • Ctrl+Home briše upisani tekst od pozicije kursora do početka reda;
  • Ctrl+End briše tekst od kursora do kraja reda.

F7 prikazuje prozor sa upisanim komandama i omogućava vam da odaberete jednu od njih. Konzola radi i sa odabirom teksta mišem, copy-paste, pozicioniranjem kursora, brisanjem, backspaceom - sve što nam se sviđa.

Šta je Windows PowerShell i sa čime se jede? Dio 1: Ključne karakteristike
Windows PowerShell ISE je kompletno razvojno okruženje sa uređivačem koda sa karticama i naglašenom sintaksom, graditeljem komandi, ugrađenim programom za otklanjanje grešaka i drugim programskim zadovoljstvima. Ako u editoru razvojnog okruženja upišete crticu iza naziva komande, dobićete sve dostupne opcije na padajućoj listi sa naznakom tipa. PowerShell ISE možete pokrenuti ili preko prečice iz sistemskog menija ili pomoću izvršne datoteke powershell_ise.exe.

Šta je Windows PowerShell i sa čime se jede? Dio 1: Ključne karakteristike

Cmdlets 

U Windows PowerShell-u, tzv. cmdlete. Ovo su specijalizovane .NET klase koje pružaju različite funkcionalnosti. Nazivaju se radnja-objekat (ili glagol-imenica, ako želite), a veza odvojena crticom podsjeća na predikat i subjekt u rečenicama prirodnog jezika. Na primjer, Get-Help doslovno znači "Get-Help", ili u kontekstu PowerShell-a: "Show-Help". Zapravo, ovo je analog naredbe man u Unix sistemima, a priručnici u PowerShell-u se moraju tražiti na ovaj način, a ne pozivanjem cmdlet-a sa --help ili /? ključem. Ne zaboravite na online PowerShell dokumentaciju: Microsoft je to dosta detaljan.

Osim Get, cmdleti koriste i druge glagole za označavanje radnji (i ne samo glagole, strogo govoreći). Na listi ispod dajemo nekoliko primjera:

Add - dodati;
Clear - čisto;
Enable - uključiti;
Disable - ugasiti;
New - stvoriti;
Remove - izbrisati;
Set - pitati;
Start - trčanje;
Stop - stop;
Export — izvoz;
Import - uvoz.

Postoje sistemski, korisnički i opcioni cmdleti: kao rezultat izvršenja, svi oni vraćaju objekat ili niz objekata. Oni ne razlikuju velika i mala slova, tj. Sa tačke gledišta tumača komandi, nema razlike između Get-Help i get-help. Znak ';' se koristi za razdvajanje, ali ga je obavezno staviti samo ako se više cmdlet-a izvršava u istoj liniji. 

Windows PowerShell cmdlet su grupisane u module (NetTCPIP, Hyper-V, itd.), a postoji i Get-Command cmdlet za pretraživanje prema objektu i radnji. Pomoć o tome možete pokazati na sljedeći način:

Get-Help Get-Command

Šta je Windows PowerShell i sa čime se jede? Dio 1: Ključne karakteristike

Podrazumevano, naredba prikazuje kratku pomoć, ali se parametri (argumenti) prosljeđuju cmdletima po potrebi. Uz njihovu pomoć možete, na primjer, dobiti detaljnu (parametar -Detailed) ili punu (parametar -Full) pomoć, kao i prikazati primjere (parametar -Primjeri):

Get-Help Get-Command -Examples

Pomoć u Windows PowerShell-u se ažurira pomoću cmdlet-a Update-Help. Ako se pokaže da je komandna linija predugačka, argumenti cmdlet-a se mogu premjestiti na sljedeći tako što ćete napisati servisni karakter '`' i pritisnuti Enter - samo završetak pisanja naredbe u jednom redu i nastavak na drugom neće raditi.

Ispod su neki primjeri uobičajenih cmdlet-a: 

Get-Process - prikazati pokrenute procese u sistemu;
Get-Service — prikažite usluge i njihov status;
Get-Content - prikaz sadržaja datoteke.

Za često korišćene cmdletove i eksterne uslužne programe, Windows PowerShell ima kratke sinonime - aliase. Na primjer, dir je pseudonim za Get-ChildItem. Na listi sinonima (ls, ps, itd.) postoje i analogi komandi iz Unix sistema (ls, ps, itd.), a Get-Help cmdlet se poziva pomoću naredbe help. Potpuna lista sinonima može se vidjeti pomoću Get-Alias ​​cmdleta:

Šta je Windows PowerShell i sa čime se jede? Dio 1: Ključne karakteristike

PowerShell skripte, funkcije, moduli i jezik

Windows PowerShell skripte se čuvaju kao obični tekstualni fajlovi sa ekstenzijom .ps1. Ne možete ih pokrenuti dvostrukim klikom: potrebno je desnim klikom da biste pozvali kontekstni izbornik i odabrali stavku „Pokreni u PowerShell-u“. Iz konzole ćete morati ili navesti punu putanju do skripte, ili otići u odgovarajući direktorij i napisati ime datoteke. Pokretanje skripti je također ograničeno sistemskom politikom, 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 (podrazumevano);
AllSigned — samo skripte koje je potpisao pouzdani programer su dozvoljene za pokretanje;
RemoteSigned - dozvoljeno pokretanje potpisanih i vlastitih skripti;
Unrestricted - Dozvoljeno pokretanje bilo koje skripte.

Administrator ima dvije opcije. Najsigurnije uključuje potpisivanje skripti, ali ovo je prilično ozbiljna vradžbina - bavit ćemo se time u budućim člancima. Sada krenimo putem manjeg otpora i promijenimo politiku:

Set-ExecutionPolicy RemoteSigned

Šta je Windows PowerShell i sa čime se jede? Dio 1: Ključne karakteristike
Da biste to učinili, morat ćete pokrenuti PowerShell kao administrator, iako možete koristiti poseban parametar za promjenu politike za trenutnog korisnika.

Skripte su napisane u objektno orijentisanom programskom jeziku, čije su komande imenovane po istom principu kao i prethodno razmatrani cmdleti: “Akcija-Objekat” (“Glagol-Imenica”). Njegova glavna svrha je automatizacija administrativnih zadataka, ali to je potpuno interpretirani jezik koji ima sve potrebne konstrukcije: uslovni skok, petlje, varijable, nizove, objekte, rukovanje greškama itd. Svaki uređivač teksta je dobar za pisanje skripti, ali je najbolje pokrenuti Windows PowerShell ISE.

Možete proslijediti parametre skripti, učiniti ih obaveznim, a također postaviti zadane vrijednosti. Windows PowerShell vam takođe omogućava da kreirate i pozivate funkcije na isti način kao cmdlet, koristeći konstrukciju funkcije i vitičaste zagrade. Skripta sa funkcijama naziva se modul i ima ekstenziju .psm1. Moduli moraju biti pohranjeni u direktorijima definiranim u varijablama okruženja PowerShell. Možete ih pogledati pomoću sljedeće naredbe:

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

Transportne trake

U posljednjem primjeru koristili smo konstrukciju koja je poznata korisnicima Unix ljuske. U Windows PowerShell-u, okomita traka vam također omogućava da proslijedite izlaz jedne komande 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 također ih mogu primiti kao ulaz. Poput Bourneove ljuske i njenih brojnih nasljednika, PowerShell olakšava složene zadatke pomoću cevovoda.

Najjednostavniji primjer cjevovoda izgleda ovako:

Get-Service | Sort-Object -property Status

Šta je Windows PowerShell i sa čime se jede? Dio 1: Ključne karakteristike
Prvo se izvršava cmdlet Get-Service, a zatim se sve usluge koje je primio prosljeđuju u Sort-Object cmdlet radi sortiranja prema svojstvu Status. Koji argument se prosljeđuje rezultat prethodnog dijela cjevovoda zavisi od njegovog tipa - obično je to InputObject. O ovom pitanju će se detaljnije raspravljati u članku posvećenom programskom jeziku PowerShell. 

Ako želite, možete nastaviti lanac i proslijediti rezultat Sort-Object u drugi cmdlet (oni će se izvršavati s lijeva na desno). Usput, korisnici Windowsa također imaju pristup dizajnu poznatom svim Unixoidima za izlaz po stranici: 

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

Izvođenje zadataka u pozadini 

Često je potrebno pokrenuti određenu naredbu u pozadini kako se ne bi čekao rezultat njenog izvršenja u sesiji ljuske. Windows PowerShell ima nekoliko cmdlet-a za ovu situaciju:

Start-Job - pokretanje pozadinskog zadatka;
Stop-Job — zaustavljanje pozadinskog zadatka;
Get-Job — pogledajte listu pozadinskih zadataka;
Receive-Job — pregled rezultata izvršavanja pozadinskog zadatka;
Remove-Job — brisanje pozadinskog zadatka;
Wait-Job — prenos pozadinskog zadatka nazad na konzolu.

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

Start-Job {Get-Service}

Šta je Windows PowerShell i sa čime se jede? Dio 1: Ključne karakteristike
Pozadinskim zadacima u Windows PowerShell-u može se manipulisati znajući njihova imena. Prvo, naučimo kako ih prikazati:

Get-Job

Šta je Windows PowerShell i sa čime se jede? Dio 1: Ključne karakteristike
Sada da pokažemo rezultat Job1:

Receive-Job Job1 | more

Šta je Windows PowerShell i sa čime se jede? Dio 1: Ključne karakteristike
Sve je prilično jednostavno.

Daljinsko izvršavanje naredbi

Windows PowerShell vam omogućava da izvršavate komande i skripte ne samo na lokalnom računaru, već i na udaljenom računaru, pa čak i na čitavoj grupi mašina. Postoji nekoliko načina da to učinite:

  • Mnoge cmdlete imaju parametar -ComputerName, ali na taj način neće biti moguće, na primjer, napraviti transporter;
  • Cmdlet Enter-PSSession omogućava vam da kreirate interaktivnu sesiju na udaljenom računaru; 
  • Korištenje cmdleta Invoke-Command možete pokrenuti komande ili skripte na jednom ili više udaljenih računara.

Verzije PowerShell-a

PowerShell se dosta promijenio od svog prvog izdanja 2006. godine. Alat je dostupan za mnoge sisteme 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 10. januara 2018. Skripte napisane za ranije verzije će vjerovatno raditi u kasnijim verzijama, ali backporting može biti problematičan jer je PowerShell uveo veliki broj novih cmdlet-a tokom godina razvoja. Možete saznati verziju komandne ljuske instalirane na računaru koristeći svojstvo PSVersion ugrađene varijable $PSVersionTable:

$PSVersionTable.PSVersion

Šta je Windows PowerShell i sa čime se jede? Dio 1: Ključne karakteristike
Također možete koristiti cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

Šta je Windows PowerShell i sa čime se jede? Dio 1: Ključne karakteristike
Ista stvar se može uraditi koristeći Get-Host cmdlet. U stvari, postoji mnogo opcija, ali da biste ih koristili morate naučiti programski jezik PowerShell, što ćemo i uraditi u sljedeći članak

Ishodi 

Microsoft je uspeo da stvori zaista moćnu ljusku sa pogodnim integrisanim okruženjem za razvoj skripti. Od alata koji su nam poznati u svetu Unixa razlikuje se po dubokoj integraciji sa operativnim sistemima porodice Windows, kao i sa softverom za njih i platformom .NET Core. 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 servera na Windows-u trebali posjedovati ovaj alat: prošlo je vrijeme kada su mogli bez komandne linije. Posebno je potrebna napredna konzolna školjka naš jeftini VPS koji pokreće Windows Server Core, ali to je sasvim druga priča.

Šta je Windows PowerShell i sa čime se jede? Dio 1: Ključne karakteristike

Samo registrovani korisnici mogu učestvovati u anketi. Prijavite semolim.

Koje teme treba prvo obraditi u narednim člancima iz serije?

  • 53,2%Programiranje u PowerShell123

  • 42,4%PowerShell98 funkcije i moduli

  • 22,1%Kako potpisati vlastite skripte?51

  • 12,1%Rad sa skladištima preko provajdera28

  • 57,6%Automatizacija administracije računara sa PowerShell133

  • 30,7%Upravljanje softverom i ugrađivanje izvršnih programa PowerShell u proizvode trećih strana71

Glasao je 231 korisnik. 37 korisnika je bilo uzdržano.

izvor: www.habr.com

Dodajte komentar