Povijesno gledano, uslužni programi naredbenog retka u Unix sustavima su razvijeniji nego u Windows, međutim, pojavom novog rješenja, situacija se promijenila.
Windows PowerShell omogućuje administratorima sustava automatizaciju većine rutinskih zadataka. Može se koristiti za promjenu postavki, zaustavljanje i pokretanje servisa te održavanje većine instaliranih aplikacija. Tretiranje plavog prozora kao još jednog interpretera naredbi bilo bi zavaravajuće. Ovaj pristup ne obuhvaća bit Microsoftovih inovacija. U stvarnosti, mogućnosti Windows PowerShell je puno širi: u ovoj kratkoj seriji članaka pokušat ćemo razumjeti kako se Microsoftovo rješenje razlikuje od alata s kojima smo poznatiji.
Ključne značajke
Naravno Windows PowerShell je prvenstveno naredbena ljuska sa skriptnim jezikom, 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 redovnih naredbi, a također pruža pristup COM, WMI i ADSI objektima. Koristi različite resurse za pohranu, kao što su datotečni sustav i registar. Windows, kojima se pristupa putem takozvanih pružatelja usluga. Vrijedi napomenuti mogućnost ugrađivanja izvršnih komponenti PowerShella u druge aplikacije za izvođenje raznih operacija, uključujući i putem grafičkog sučelja. Vrijedi i suprotno: mnoge aplikacije za Windows omogućuju pristup svojim upravljačkim sučeljima putem PowerShella.
Windows PowerShell vam omogućuje:
- 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, registrom Windows, pohrana certifikata itd.
Školjka i razvojno okruženje
Tamo Windows PowerShell dolazi u dva oblika: uz emulator konzole i naredbenu ljusku, postoji i integrirano okruženje za skriptiranje (ISE). Za pristup sučelju naredbenog retka jednostavno odaberite odgovarajući prečac iz izbornika. Windows Ili pokrenite powershell.exe iz izbornika Pokreni. Pojavit će se plavi prozor, koji se znatno razlikuje po mogućnostima od drevnog cmd.exe. Sadrži automatsko dovršavanje i druge značajke poznate korisnicima Unix naredbenih ljuski.

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.

Windows PowerShell ISE je potpuno razvojno okruženje s uređivačem koda s karticama i isticanjem sintakse, dizajnerom naredbi, ugrađenim programom za ispravljanje pogrešaka i drugim programerskim čarima. Ako u IDE uređivaču upišete crticu nakon naziva naredbe, vidjet ćete padajući popis svih dostupnih parametara, zajedno s njihovom vrstom. PowerShell ISE možete pokrenuti putem prečaca u izborniku sustava ili pokretanjem izvršne datoteke powershell_ise.exe.

Cmdlets
В Windows PowerShell sada sadrži takozvane cmdlete. To su specijalizirane .NET klase koje implementiraju razne funkcionalnosti. Imenuju se pomoću principa Radnja-Objekt (ili Glagol-Imenica, ako više volite), a sparivanje crticom nalikuje predikat i subjekt u rečenicama prirodnog jezika. Na primjer, Get-Help doslovno znači "Get-Help" ili, u kontekstu PowerShella, "Show-Help". U osnovi, to je ekvivalent naredbe man u Unix sustavima, a priručnicima u PowerShellu treba pristupiti na ovaj način, a ne pozivanjem cmdleta s --help ili /? prekidačem. Ne zaboravite na PowerShellovu online dokumentaciju: Microsoft ima prilično detaljnu.
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.
Cmdlets Windows PowerShell je grupiran u module (NetTCPIP, Hyper-V, itd.), a cmdlet Get-Command koristi se za pretraživanje objekata i akcija. Pomoć za njega možete prikazati na sljedeći način:
Get-Help Get-Command 
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 -ExamplesPomoć u Windows PowerShell se ažurira pomoću cmdleta Update-Help. Ako naredbeni redak postane predug, argumenti cmdleta mogu se premjestiti u sljedeći redak upisivanjem simbola "`" i pritiskom na Enter - ne možete jednostavno završiti tipkanje naredbe u jednom retku i nastaviti u drugom.
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 u Windows PowerShell ima kratke sinonime koji se nazivaju aliasi. Na primjer, dir je alias za Get-ChildItem. Popis sinonima također uključuje Unix-slične naredbe (ls, ps, itd.), a Get-Help cmdlet se poziva naredbom help. Potpuni popis sinonima može se vidjeti pomoću Get-Alias cmdleta:

PowerShell skripte, funkcije, moduli i jezik
skripta Windows PowerShell skripte pohranjuju se kao obične tekstualne datoteke s ekstenzijom .ps1. Ne mogu se pokrenuti dvostrukim klikom; morate kliknuti desnom tipkom miša da biste otvorili kontekstni izbornik i odabrati "Pokreni s PowerShellom". Iz konzole ćete morati navesti punu putanju do skripte ili otići do odgovarajućeg direktorija i upisati naziv datoteke. Pokretanje skripti također je ograničeno sistemskim pravilima. 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 
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 cmdleti o kojima se ranije raspravljalo: "Akcija-Objekt" ("Glagol-Imenica"). Njegova glavna svrha je automatizacija administrativnih zadataka, ali je to potpuno razvijen interpretirani jezik koji uključuje sve potrebne konstrukcije: uvjetne grane, petlje, varijable, nizove, objekte, rukovanje pogreškama itd. Bilo koji uređivač teksta prikladan je za pisanje skripti, ali najpogodnije ga je pokrenuti Windows PowerShell ISE.
Skripti možete proslijediti parametre, učiniti ih obveznima i postaviti zadane vrijednosti. Osim toga, Windows PowerShell vam omogućuje stvaranje funkcija i njihovo pozivanje baš kao cmdlete, koristeći konstrukt Function i vitičaste zagrade. Skripta koja sadrži funkcije naziva se modul i ima ekstenziju .psm1. Moduli moraju biti pohranjeni u direktorijima definiranim u varijablama okruženja PowerShella. Možete ih pregledati pomoću sljedeće naredbe:
Get-ChildItem Env:PSModulePath | Format-Table -AutoSizekonvejer
U posljednjem primjeru koristili smo konstrukciju poznatu korisnicima Unix ljuski. Windows PowerShellova okomita traka također vam omogućuje preusmjeravanje izlaza jedne naredbe na ulaz druge, ali postoji značajna razlika u implementaciji cjevovoda: više nije riječ o nizu znakova ili teksta. Ugrađeni cmdleti i korisnički definirane funkcije vraćaju objekte ili nizove objekata i mogu ih primati kao ulaz. Poput Bourneove ljuske i njezinih mnogih nasljednika, PowerShell koristi cjevovod za pojednostavljenje složenih zadataka.
Najjednostavniji primjer cjevovoda izgleda ovako:
Get-Service | Sort-Object -property Status 
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.
Po želji, lanac se može proširiti i rezultat Sort-Object-a može se proslijediti drugom cmdletu (izvršavat će se s lijeva na desno). Usput, korisnici Windows Dostupna je i konstrukcija paginacije, poznata svim Unix korisnicima:
Get-Service | Sort-Object -property Status | morePokretanje zadataka u pozadini
Često je potrebno pokrenuti određenu naredbu u pozadini, kako se ne bi čekao rezultat njenog izvršavanja u shell sesiji. 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} 
Pozadinski zadaci u Windows PowerShellom se može manipulirati poznavanjem njihovih imena. Počnimo s učenjem kako ih prikazati:
Get-Job 
Sada pokažimo rezultat posla Job1:
Receive-Job Job1 | more 
Sve je prilično jednostavno.
Daljinsko izvršenje naredbi
Windows PowerShell vam omogućuje pokretanje naredbi i skripti ne samo na lokalnom računalu, već i na udaljenim računalima, pa čak i na cijelim grupama 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-PSSessionomogućuje vam stvaranje interaktivne sesije na udaljenom računalu; - Korištenje cmdleta
Invoke-Commandmožete pokretati naredbe ili skripte na jednom ili više udaljenih računala.
Verzije PowerShell-a
PowerShell se značajno razvio od svog prvog izdanja 2006. godine. Dostupan je za širok raspon sustava koji rade na raznim hardverskim platformama (x86, x86-64, Itanium, ARM): Windows XP, Windows Server 2003, Windows Vista Windows Server 2008/2008R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows Članak 8.1, Windows Server 2012/2012R2, 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 i u kasnijim verzijama, ali povratno prenošenje može biti problematično jer je PowerShell tijekom godina dodao veliki broj novih cmdleta. Verziju naredbene ljuske instalirane na vašem računalu možete saznati pomoću svojstva PSVersion ugrađene varijable $PSVersionTable:
$PSVersionTable.PSVersion 
Također možete koristiti cmdlet:
Get-Variable -Name PSVersionTable –ValueOnly 
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 .
Rezultati
Microsoft je stvorio uistinu moćnu naredbenu ljusku s praktičnim integriranim okruženjem za razvoj skripti. Ono što je razlikuje od alata na koje smo navikli u Unix svijetu jest njezina duboka integracija s operativnim sustavima te obitelji. Windows, kao i softver za njih i .NET Core platformu. PowerShell se može nazvati objektno orijentiranom ljuskom jer cmdleti i korisnički definirane funkcije vraćaju objekte ili nizove objekata i mogu ih primati kao ulaz. Vjerujemo da je ovaj alat neophodan za sve administratore poslužitelja. WindowsProšlo je vrijeme kada su mogli bez komandne linije. Napredna konzolna ljuska je posebno potrebna na , ali to je sasvim druga priča.
U anketi mogu sudjelovati samo registrirani korisnici. , 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
