Kaj je Windows PowerShell in s čim ga jemo? 1. del: Ključne lastnosti

Zgodovinsko gledano so pripomočki ukazne vrstice v sistemih Unix bolje razviti kot v sistemu Windows, vendar se je s pojavom nove rešitve situacija spremenila.

Windows PowerShell sistemskim skrbnikom omogoča avtomatizacijo večine rutinskih opravil. Z njim lahko spreminjate nastavitve, zaustavljate in zaganjate storitve ter izvajate vzdrževanje večine nameščenih aplikacij. Napačno bi bilo modro okno dojemati kot še en tolmač ukazov. Ta pristop ne odraža bistva novosti, ki jih predlaga Microsoft. Pravzaprav so možnosti lupine Windows PowerShell veliko širše: v kratkem nizu člankov bomo poskušali ugotoviti, v čem se Microsoftova rešitev razlikuje od orodij, ki so nam bolj znana.

Kaj je Windows PowerShell in s čim ga jemo? 1. del: Ključne lastnosti

Glavne lastnosti 

Seveda je lupina Windows PowerShell predvsem skriptna lupina, prvotno zgrajena na .NET Framework in kasneje na .NET Core. Za razliko od lupin, ki sprejemajo in vračajo besedilne podatke, Windows PowerShell deluje z razredi .NET, ki imajo lastnosti in metode. PowerShell vam omogoča izvajanje običajnih ukazov in vam omogoča tudi dostop do objektov COM, WMI in ADSI. Uporablja različne shrambe, kot sta datotečni sistem ali register Windows, za dostop do katerih t.i. ponudniki. Omeniti velja možnost vdelave izvršljivih komponent PowerShell v druge aplikacije za izvajanje različnih operacij, vklj. preko grafičnega vmesnika. Velja tudi obratno: številne aplikacije Windows omogočajo dostop do svojih vmesnikov za upravljanje prek lupine PowerShell. 

Windows PowerShell vam omogoča:

  • Spremenite nastavitve operacijskega sistema;
  • Upravljanje storitev in procesov;
  • Konfigurirajte strežniške vloge in komponente;
  • Namestite programsko opremo;
  • Upravljajte nameščeno programsko opremo prek posebnih vmesnikov;
  • Vdelajte izvedljive komponente v programe tretjih oseb;
  • Ustvarite skripte za avtomatizacijo skrbniških opravil;
  • Delo z datotečnim sistemom, registrom Windows, shrambo potrdil itd.

Lupina in razvojno okolje

Windows PowerShell obstaja v dveh oblikah: poleg emulatorja konzole z ukazno lupino obstaja integrirano skriptno okolje (ISE). Za dostop do vmesnika ukazne vrstice preprosto izberite ustrezno bližnjico v meniju Windows ali zaženite powershell.exe v meniju Zaženi. Na zaslonu se prikaže modro okno, ki se po zmogljivostih opazno razlikuje od predpotopnega cmd.exe. Obstajajo samodokončanje in druge funkcije, ki jih poznajo uporabniki ukaznih lupin za sisteme Unix.

Kaj je Windows PowerShell in s čim ga jemo? 1. del: Ključne lastnosti

Za delo z lupino si morate zapomniti nekaj bližnjic na tipkovnici:

  • Puščici gor in dol se pomikajte po zgodovini, da ponovite predhodno vnesene ukaze;
  • Desna puščica na koncu vrstice pretipka prejšnji ukaz znak za znakom;
  • Ctrl+Home izbriše vtipkano besedilo od položaja kazalca do začetka vrstice;
  • Ctrl+End izbriše besedilo od kazalca do konca vrstice.

F7 prikaže okno z vnesenimi ukazi in omogoča izbiro enega izmed njih. Konzola deluje tudi z izbiro besedila z miško, kopiranjem in lepljenjem, postavljanjem kazalca, brisanjem, vračanjem - vse, kar nam je všeč.

Kaj je Windows PowerShell in s čim ga jemo? 1. del: Ključne lastnosti
Windows PowerShell ISE je popolno razvojno okolje z urejevalnikom kode z zavihki in sintakso, graditeljem ukazov, vgrajenim razhroščevalnikom in drugimi programerskimi užitki. Če v urejevalniku razvojnega okolja za imenom ukaza napišete vezaj, se na spustnem seznamu prikažejo vse razpoložljive možnosti z navedbo vrste. PowerShell ISE lahko zaženete prek bližnjice v sistemskem meniju ali z izvršljivo datoteko powershell_ise.exe.

Kaj je Windows PowerShell in s čim ga jemo? 1. del: Ključne lastnosti

Cmdlets 

V lupini Windows PowerShell je t.i. cmdleti. To so specializirani razredi .NET, ki nudijo različne funkcionalnosti. Imenujejo se dejanje-predmet (ali glagol-samostalnik, če vam je ljubše), povezava, ločena z vezajem, pa je podobna povedku in subjektu v stavkih naravnega jezika. Na primer Get-Help dobesedno pomeni "Get-Help" ali v kontekstu PowerShell: "Show-Help". Pravzaprav je to analog ukaza man v sistemih Unix in priročnike v lupini PowerShell je treba zahtevati na ta način in ne s klicanjem cmdletov s tipko --help ali /?. Ne pozabite na spletno dokumentacijo PowerShell: Microsoft ima to precej podrobno.

Poleg Get cmdleti uporabljajo tudi druge glagole za označevanje dejanj (in ne le glagole, strogo gledano). Na spodnjem seznamu navajamo nekaj primerov:

Add - dodati;
Clear - jasno;
Enable - vklopiti;
Disable - ugasnite;
New - ustvarjati;
Remove - izbrisati;
Set - vprašati;
Start - teči;
Stop - ustaviti;
Export - izvoz;
Import - uvoz.

Obstajajo sistemski, uporabniški in izbirni ukazi cmdlet: kot rezultat izvajanja vsi vrnejo predmet ali niz predmetov. Niso občutljivi na velike in male črke, tj. z vidika tolmača ukazov ni razlike med Get-Help in get-help. Za ločevanje se uporablja znak ';', vendar ga je obvezno vnesti le, če se v isti vrstici izvaja več cmdletov. 

Windows PowerShell cmdlet so združeni v module (NetTCPIP, Hyper-V itd.), na voljo pa je tudi ukaz Get-Command za iskanje po predmetu in dejanju. Pomoč zanj lahko prikažete takole:

Get-Help Get-Command

Kaj je Windows PowerShell in s čim ga jemo? 1. del: Ključne lastnosti

Privzeto ukaz prikaže kratko pomoč, vendar se parametri (argumenti) po potrebi posredujejo cmdletom. Z njihovo pomočjo lahko na primer dobite podrobno (parameter -Detailed) ali celotno (parameter -Full) pomoč ter prikažete primere (parameter -Examples):

Get-Help Get-Command -Examples

Pomoč v lupini Windows PowerShell se posodobi s cmdletom Update-Help. Če se izkaže, da je ukazna vrstica predolga, lahko argumente cmdleta premaknete v naslednjo, tako da napišete servisni znak »`« in pritisnete Enter – samo dokončanje pisanja ukaza v eni vrstici in nadaljevanje v drugi ne bo delovalo.

Tukaj je nekaj primerov običajnih cmdletov: 

Get-Process - prikaz tekočih procesov v sistemu;
Get-Service — prikazati storitve in njihov status;
Get-Content - prikaz vsebine datoteke.

Za pogosto uporabljene cmdlete in zunanje pripomočke ima lupina Windows PowerShell kratke sinonime - vzdevke (iz angleščine. Alias). Na primer, dir je vzdevek za Get-ChildItem. Seznam sinonimov vključuje tudi analoge ukazov iz sistemov Unix (ls, ps itd.), cmdlet Get-Help pa kliče ukaz help. Celoten seznam sinonimov si lahko ogledate s cmdletom Get-Alias ​​​​:

Kaj je Windows PowerShell in s čim ga jemo? 1. del: Ključne lastnosti

Skripti, funkcije, moduli in jezik PowerShell

Skripti lupine Windows PowerShell so shranjeni kot datoteke z navadnim besedilom s pripono .ps1. Ne morete jih zagnati z dvojnim klikom: z desnim klikom morate priklicati kontekstni meni in izbrati element »Zaženi v PowerShell«. V konzoli boste morali določiti celotno pot do skripta ali pa iti v ustrezen imenik in napisati ime datoteke. Izvajanje skriptov je omejeno tudi s sistemskim pravilnikom, za preverjanje trenutnih nastavitev pa lahko uporabite cmdlet Get-ExecutionPolicy, ki bo vrnil eno od naslednjih vrednosti:

Restricted — zagon skriptov je onemogočen (privzeto);
AllSigned - dovoljen je le zagon skriptov, ki jih je podpisal zaupanja vreden razvijalec;
RemoteSigned - dovoljeno izvajanje podpisanih in lastnih skriptov;
Unrestricted - dovoljeno izvajanje poljubnih skriptov.

Administrator ima dve možnosti. Najbolj varno vključuje podpisovanje skriptov, vendar je to resna čarovnija - s tem se bomo ukvarjali v prihodnjih člankih. Zdaj pa pojdimo po poti najmanjšega odpora in spremenimo politiko:

Set-ExecutionPolicy RemoteSigned

Kaj je Windows PowerShell in s čim ga jemo? 1. del: Ključne lastnosti
Za to je treba PowerShell zagnati kot skrbnik, čeprav lahko pravilnik za trenutnega uporabnika spremenite s posebno nastavitvijo.

Skripte so napisane v objektno usmerjenem programskem jeziku, katerega ukazi so poimenovani po istem principu kot prej obravnavani cmdleti: »Action-Object« (»Verb-Noun«). Njegov glavni namen je avtomatizirati administrativna opravila, vendar je polnopravni interpretirani jezik, ki ima vse potrebne konstrukcije: pogojni skok, zanke, spremenljivke, nize, objekte, obravnavanje napak itd. Vsak urejevalnik besedil je primeren za skriptiranje, vendar je najbolje, da zaženete Windows PowerShell ISE.

Parametre lahko posredujete skriptu, jih naredite zahtevane in nastavite privzete vrednosti. Poleg tega vam lupina Windows PowerShell omogoča ustvarjanje in klicanje funkcij na enak način kot cmdlete, z uporabo konstrukcije Function in zavitih oklepajev. Skript s funkcijami se imenuje modul in ima pripono .psm1. Moduli morajo biti shranjeni v imenikih, definiranih v spremenljivkah okolja PowerShell. Ogledate si jih lahko z naslednjim ukazom:

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

Transporterji

V zadnjem primeru smo uporabili konstrukcijo, ki je znana uporabnikom lupine Unix. V lupini Windows PowerShell vam navpična vrstica omogoča tudi prenos izhoda enega ukaza na vhod drugega, vendar obstaja bistvena razlika v izvedbi cevovoda: ne govorimo več o nizu znakov ali nekakšnem besedilo. Vgrajeni cmdleti ali uporabniško definirane funkcije vrnejo predmete ali nize predmetov in jih lahko tudi sprejmejo kot vhod. Tako kot lupina Bourne in njeni številni nasledniki tudi PowerShell olajša zapletene naloge s cevovodom.

Najenostavnejši primer cevovoda izgleda takole:

Get-Service | Sort-Object -property Status

Kaj je Windows PowerShell in s čim ga jemo? 1. del: Ključne lastnosti
Najprej se izvede cmdlet Get-Service, nato pa se vse storitve, ki jih prejme, posredujejo cmdletu Sort-Object za razvrščanje po lastnosti Status. Kateri argument se posreduje rezultat prejšnjega odseka cevovoda, je odvisno od njegove vrste - običajno je to InputObject. To vprašanje bo podrobneje obravnavano v članku, posvečenem programskemu jeziku PowerShell. 

Če želite, lahko nadaljujete verigo in posredujete rezultat operacije Sort-Object v drug cmdlet (izvedeni bodo od leve proti desni). Mimogrede, uporabniki sistema Windows imajo tudi dostop do konstrukcije za paginacijo, ki je znana vsem Unixoidom: 

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

Izvajanje nalog v ozadju 

Pogosto je potrebno zagnati določen ukaz v ozadju, da ne bi čakali na rezultat njegove izvedbe v lupinski seji. Windows PowerShell ima več ukazov cmdlet za ta primer:

Start-Job - zagon opravila v ozadju;
Stop-Job — ustavite opravilo v ozadju;
Get-Job — ogled seznama opravil v ozadju;
Receive-Job — ogled rezultatov izvajanja nalog v ozadju;
Remove-Job — brisanje opravila v ozadju;
Wait-Job - prenos opravila v ozadju nazaj na konzolo.

Za zagon opravila v ozadju uporabimo cmdlet Start-Job in podamo ukaz ali niz ukazov v zavitih oklepajih:

Start-Job {Get-Service}

Kaj je Windows PowerShell in s čim ga jemo? 1. del: Ključne lastnosti
Opravila v ozadju v lupini Windows PowerShell je mogoče manipulirati tako, da poznate njihova imena. Najprej se naučimo, kako jih prikazati:

Get-Job

Kaj je Windows PowerShell in s čim ga jemo? 1. del: Ključne lastnosti
Zdaj pa pokažimo rezultat opravila Job1:

Receive-Job Job1 | more

Kaj je Windows PowerShell in s čim ga jemo? 1. del: Ključne lastnosti
Vse je precej preprosto.

Oddaljeno izvajanje ukazov

Windows PowerShell vam omogoča izvajanje ukazov in skriptov ne samo v lokalnem računalniku, temveč tudi v oddaljenem računalniku in celo na celotni skupini strojev. To lahko storite na več načinov:

  • Številni cmdleti imajo parameter -ComputerName, vendar na ta način ne bo delovalo, na primer, ustvariti tekoči trak;
  • Cmdlet Enter-PSSession omogoča ustvarjanje interaktivne seje na oddaljenem računalniku; 
  • Uporaba ukaza cmdlet Invoke-Command lahko izvajate ukaze ali skripte na enem ali več oddaljenih računalnikih.

Različice lupine PowerShell

PowerShell se je od svoje prve izdaje leta 2006 precej spremenil. Orodje je na voljo za številne sisteme, ki delujejo na različnih platformah strojne opreme (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 in OS X. Najnovejša izdaja 6.2 je bila izdana 10. januarja 2018. Verjetneje je, da bodo skripti, napisani za starejše različice, delovali v poznejših različicah, vendar je prenos v ozadju lahko problematičen, ker je PowerShell v letih razvoja uvedel veliko število novih cmdletov. Različico ukazne lupine, ki je nameščena v računalniku, lahko ugotovite z lastnostjo PSVersion vgrajene spremenljivke $PSVersionTable:

$PSVersionTable.PSVersion

Kaj je Windows PowerShell in s čim ga jemo? 1. del: Ključne lastnosti
Uporabite lahko tudi ukaz cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

Kaj je Windows PowerShell in s čim ga jemo? 1. del: Ključne lastnosti
Enako se naredi s cmdletom Get-Host. Pravzaprav obstaja veliko možnosti, vendar se morate za njihovo uporabo naučiti programskega jezika PowerShell, kar bomo storili v naslednji članek

Rezultati 

Microsoftu je uspelo ustvariti res močno lupino s priročnim integriranim okoljem za razvoj skriptov. Od orodij, ki jih poznamo v svetu Unixa, se razlikuje po globoki integraciji z operacijskimi sistemi družine Windows, pa tudi s programsko opremo zanje in platformo .NET Core. PowerShell lahko imenujemo objektno orientirana lupina, ker cmdleti in uporabniško definirane funkcije vrnejo predmete ali nize predmetov in jih lahko sprejmejo kot vhod. Menimo, da bi morali vsi skrbniki strežnikov v sistemu Windows imeti to orodje: minil je čas, ko so lahko storili brez ukazne vrstice. Napredna lupina konzole je še posebej potrebna na naš poceni VPS z operacijskim sistemom Windows Server Core, ampak to je čisto druga zgodba.

Kaj je Windows PowerShell in s čim ga jemo? 1. del: Ključne lastnosti

V anketi lahko sodelujejo samo registrirani uporabniki. Prijaviti se, prosim.

Katere teme bi morali najprej obravnavati v naslednjih člankih v seriji?

  • 53,2%Programiranje v PowerShell123

  • 42,4%Funkcije in moduli PowerShell98

  • 22,1%Kako podpisati lastne skripte?51

  • 12,1%Delo z repozitoriji prek ponudnikov (ponudnikov)28

  • 57,6%Avtomatizacija računalniške administracije s PowerShell133

  • 30,7%Upravljanje programske opreme in vdelava izvršljivih datotek PowerShell v izdelke tretjih oseb71

Glasovalo je 231 uporabnikov. 37 uporabnikov se je vzdržalo.

Vir: www.habr.com

Dodaj komentar