15Jul

Geek School: Naučite se kako avtomatizirati Windows z PowerShell

V tej izdaji šole Geek vam bomo pomagali razumeti močan skriptni jezik PowerShell, ki je vgrajen v Windows in je izjemno koristen za poznavanje v IT okolju.

Čeprav ta serija ni strukturirana okoli izpita, učenje PowerShell je ena od najpomembnejših stvari, ki jih lahko naredite kot skrbnik omrežja, zato, če se želite naučiti, kako pomagati vaši IT karieri, to je to. Plus, to je zelo zabavno.

Uvod

PowerShell je najmočnejše orodje za avtomatizacijo, ki ga ponuja Microsoft, in njeno obojestransko in skriptni jezik.

Upoštevajte, da je ta serija zasnovana na PowerShell 3, ki je priložen operacijam Windows 8 in Server 2012. Če uporabljate Windows 7, pred nadaljevanjem prenesite posodobitev PowerShell 3.

Spoznajte konzolo in ISE

Obstajata dva načina za interakcijo z PowerShell-om iz polja, konzole in integriranega skriptnega okolja - znanega tudi kot ISE.ISE se je močno izboljšal iz grozljive različice, ki je bila dobavljena z PowerShell 2, in jo lahko odprete tako, da pritisnete kombinacijo tipkovnice Win + R, da odprete okno za zagon, nato vnesete powershell_ise in pritisnite enter.

Kot vidite, je ISE športni pogled tako, da lahko hitro skriptirate, medtem ko lahko še vedno vidite rezultat v spodnji polovici ISE-ja. Spodnja polovica ISE, kjer so natisnjeni rezultati vašega skripta, lahko uporabite tudi kot poziv za REPL - podobno kot ukazni poziv. V3 ISE je končno dodal podporo za intellisense v obeh skriptnih ploščah kot tudi v interaktivni konzoli.

Lahko pa tudi interakcijo z PowerShellom s konzolo PowerShell, kar bom uporabil za večino te serije. PowerShell konzola se obnaša podobno kot ukazni poziv - preprosto vnesete ukaze in izplača rezultate.Če želite odpreti konzolo Windows PowerShell, znova pritisnite kombinacijo tipkovnice Win + R, da odprete okno za izvajanje in vnesete Powerhell, nato pritisnite enter.

REPL prosi, kot je to super za takojšnjo zadovoljstvo: vnesete ukaz in dobite rezultate. Medtem ko konzola ne ponuja intellisense, ponudi nekaj, kar se imenuje zaključek zavihkov, ki deluje enako - preprosto začnite s tipkanjem ukaza in pritisnite jeziček, da preusmerite možne tekme.

Uporaba sistema pomoči

V preteklih različicah PowerShell so bile datoteke pomoči vključene pri namestitvi operacijskega sistema Windows. To je bila dobra rešitev v večini primerov, vendar smo imeli velik problem. Ko je skupina za pomoč PowerShell morala prenehati delati na datotekah za pomoč, so bili razvijalci PowerShell še vedno zaposleni pri kodiranju in spreminjanju. To je pomenilo, da so bile pripomočke, ko je bilo dobavljeno orodje PowerShell, napačne, ker niso vsebovale novih sprememb, ki so bile spremenjene v kodo. Da bi rešili to težavo, PowerShell 3 prihaja brez pomoči, ki bi vsebovala polje in vključuje sistem, ki ga je mogoče posodobiti. To pomeni, preden naredite nekaj, kar boste želeli prenesti najnovejše datoteke pomoči. To lahko storite tako, da odprete PowerShell konzolo in zaženete:

Update-Help

Čestitamo vam, da ste zagnali svoj prvi PowerShell ukaz! Resnica je, da ima ukaz Update-Help veliko več možnosti, kot da bi ga preprosto zagnali, in da bi jih videli, da si bomo ogledali pomoč za ukaz.Če si želite ogledati pomoč za ukaz, preprosto prenesite ime ukaza, ki ga želite pomagati, do parametra Name ukaza Get-Help, na primer:

Get-Help -Name Pomoč za posodobitev

Verjetno se sprašujete, kako interpretirativse to besedilo vseeno, mislim, zakaj sta v razdelku sintakse dve vrsti informacij in zakaj obstaja toliko oklepajev po vsem mestu? Najprej najprej: vzrok je, da sta v razdelku sintakse dve bazi podatkov, ker predstavljata različne načine za zagon ukaza. Tehnično se imenujejo nabori parametrov in jih lahko uporabljate le enkrat( ne morete mešati parametrov iz različnih sklopov).V zgornjem posnetku zaslona lahko vidite, da je na vrhu parametrov nastavljen parameter SourcePath, medtem ko spodaj ni. Razlog je, da bi uporabili zgornji parameter parametrov( tisti, ki vključuje SourcePath), če ste posodobili datoteke za pomoč z drugega računalnika v omrežju, ki ste jih že prenesli, medtem ko vam ni treba določiti izvorne poti, če stesamo želel zgrabiti najnovejše datoteke iz Microsofta.

Če želite odgovoriti na drugo vprašanje, obstaja določena skladnja, ki ji pomagajo slediti datotekam in tukaj je:

  • Kvadratni oklepaj okrog imena parametra in njegove vrste pomeni, da je neobvezen parameter in ukaz bo brezhibno deloval.
  • Kvadratni oklepaj okoli imena parametrov pomeni, da so parametri pozicijski parameter.
  • Stvar desno od parametra v kotnih oklepajev vam pove vrsto podatkov, ki ga parameter pričakuje.

Medtem ko se morate naučiti prebrati sintakso s pomočjo datoteke, če niste prepričani o določenem parametru, samo dodajte - povsem do konca ukaza za pomoč in se pomaknite navzdol do razdelka parametrov, kjer vam bo povedal nekaj več ovsak parameter.

Get-Help -Name Update-Help -Full

Zadnja stvar, ki jo morate poznati o sistemu pomoči, je, kako jo lahko uporabite za odkrivanje ukazov, kar je pravzaprav zelo enostavno. Vidite, PowerShell sprejema nadomestne znake skoraj povsod, zato jih lahko uporabite skupaj z ukazom Get-Help, ki omogoča preprosto odkrivanje ukazov. Na primer, iščem ukaze, ki se ukvarjajo z operacijami Windows Services:

Get-Help -Name * storitev *

Seveda, vse te informacije morda niso primerne za bat, vendar mi zaupajte, si vzemite čas in se naučite, kako uporabljatisistem pomoči. Prizadevata je ves čas, celo naprednim scenaristom, ki to delajo že leta.

Security

To ne bi bilo primerno uvajanje brez omembe varnosti. Največji skrb za PowerShellovo ekipo je, da PowerShell postane najnovejša in najmočnejša točka napada za skripte. Vzeli so nekaj varnostnih ukrepov, da bi se prepričali, da se to ne zgodi, zato si jih oglejmo.

Najosnovnejša oblika zaščite izhaja iz dejstva, da razširitev datoteke PS1( razširitev, uporabljena za označevanje skripte PowerShell) ni registrirana pri gostitelju PowerShell, ki je dejansko registrirana z beležnico. To pomeni, da če dvokliknete datoteko, se bo odprla z beležnico namesto teči.

Drugič, skriptov iz lupine ne morete zagnati, tako da vnesete ime skripta, morate določiti celotno pot do skripta. Torej, če bi želeli zagnati skript na vašem pogonu C, bi morali vnesti:

C: \ runme.ps1

Ali če ste že v koraku pogona C, lahko uporabite naslednje:

. \ Runme.ps1

Končno, PowerShell ima nekaj imen, ki se imenujejo pravilniki izvrševanja, zaradi česar vas ne morete zagnati s starim skriptom. Pravzaprav ne morete zagnati nobenih skript in morate spremeniti pravilnik izvajanja, če jih želite zagnati. Obstajajo 4 pomembne politike izvrševanja:

  • omejeno : to je privzeta konfiguracija v programu PowerShell. Ta nastavitev pomeni, da se ne more zagnati noben skript, ne glede na njegov podpis. Edina stvar, ki jo lahko s to nastavitvijo zaženete v programu PowerShell, je posamezni ukaz.
  • AllSigned: Ta nastavitev omogoča izvajanje skriptov v programu PowerShell. Skript mora imeti povezani digitalni podpis pooblaščenega izdajatelja. Preden zaženete skripte od zaupanja vrednih izdajateljev, se bo pojavil poziv.
  • RemoteSigned : ta nastavitev omogoča izvajanje skript, vendar zahteva, da skript in konfiguracijske datoteke, ki so prenesene iz interneta, imajo povezani digitalni podpis od zaupanja vrednega izdajatelja. Skripti, ki se izvajajo iz lokalnega računalnika, ni treba podpisati. Pred zagonom skripta ni nobenih pozivov.
  • Neomejen : To omogoča nepodpisane skripte, vključno z vsemi skripti in konfiguracijskimi datotekami, prenesenimi iz interneta. To bo vključevalo datoteke iz programa Outlook in Messenger. Tveganje tukaj izvaja skripte brez podpisa ali varnosti. Pričeli smo, da te nastavitve nikoli ne najdete.

Če si želite ogledati, kakšen je vaš trenutni pravilnik za izvajanje, odprite konzolo PowerShell in vnesite:

Get-ExecutionPolicy

Za ta tečaj in večino drugih okoliščin je politika RemoteSigned najboljša, zato pojdite naprej in spremenite svojo politiko z naslednjim.

Opomba: To bo treba narediti iz povišane konzole PowerShell.

Set-ExecutionPolicy RemoteSigned

To je vse za tokrat, ljudje, vidimo se jutri, da bo še bolj zabavno PowerShell.

Izjava o omejitvi odgovornosti: Pravilni izraz za ukaz PowerShell je cmdlet, od zdaj naprej pa bomo uporabili to pravilno terminologijo. Zdelo se jim je, da jih je treba imenovati za ukaze.

Če imate kakršna koli vprašanja, me lahko tweet @taybgibb ali pustite komentar.