15Jul

Geeko mokykla: sužinokite, kaip automatizuoti "Windows" su "PowerShell"

Šiame "Geek" mokyklos leidime mes padėsime jums suprasti galingą "PowerShell" scenarijų kalbą, sukurtą tiesiai į "Windows", ir yra labai naudinga žinoti IT aplinkoje.

Nors ši serija nėra sukonstruota per egzaminą, mokymasis PowerShell yra vienas iš svarbiausių dalykų, kurį galite padaryti kaip tinklo administratorių, taigi, jei yra vienas dalykas, kurį norite išmokti padėti IT karjerai, tai yra. Be to, tai labai linksma.

Įvadas

PowerShell yra galingiausias automatikos įrankis, kurį "Microsoft" gali pasiūlyti, ir jo apvalkalas, ir scenarijų kalba.

Atminkite, kad ši serija yra pagrįsta "PowerShell 3", kuri tiekia "Windows 8" ir "Server 2012". Jei naudojate "Windows 7", prieš tęsdami atsisiųskite "PowerShell 3".

Susipažinkite su konsolė ir ISE

Yra du būdai, kaip bendrauti su "PowerShell" iš dėžutės, "Console" ir integruota scenarijus aplinka, taip pat žinoma kaip ISE.ISE žymiai patobulėjo iš paslaptingos versijos, kuri buvo pristatyta kartu su "PowerShell 2", ir ją galima atidaryti spaudžiant "Win + R" klaviatūros kombinaciją, kad būtų rodomas paleidimo langelis, tada įvesdami "powershell_ise" ir paspausdami enter.

Kaip matote ISE sportą, galite suskirstyti peržiūrą, kad galėtumėte greitai parašyti scenarijų, tuo tarpu dar galite pamatyti rezultatą apatinėje ISE pusėje. Apatinė ISE pusė, kurioje spausdinami jūsų scenarijaus rezultatai, taip pat gali būti naudojama kaip REPL eilutė - panaši į komandų eilutę.V3 ISE galiausiai pridėjo intellisense palaikymą tiek scenarijų srityje, tiek interaktyvioje konsolėje.

Taip pat galėtumėte bendrauti su "PowerShell", naudodami "PowerShell" konsolę, tai aš turėčiau naudoti daugumai šios serijos."PowerShell" konsolė elgiasi taip pat kaip ir komandų eilutė - jūs tiesiog įveskite komandas ir išsiskleidžia rezultatus. Norėdami atidaryti "Windows PowerShell" konsolę, dar kartą paspauskite "Win + R" klaviatūros kombinaciją, kad atidarytumėte paleidimo langą ir įveskite powershell, tada paspauskite enter.

REPL paragina, kad tai yra nuostabus momentinis malonumas: įvedate komandą ir gaunate rezultatus. Nors "Console" nesiūlo intelekto, jis siūlo kažką pavadinimu "skirtuko užbaigimas", kuris veikia labai panašiai - tiesiog pradėkite rašyti komandą ir paspauskite skirtuką, kad sukurtumėte galimas rungtynes.

Pagalbos sistemos

naudojimas Ankstesnėse "PowerShell" versijose, kai įdiegėte "Windows", buvo įtraukti pagalbos failai. Daugeliu atvejų tai buvo geras sprendimas, tačiau mums iškilo didelė problema. Kai "PowerShell" pagalbos komanda turėjo nustoti dirbti pagalbos bylose, "PowerShell" kūrėjai vis dar užsiėmė kodavimu ir pakeitimų atlikimu. Tai reikštų, kad kai "PowerShell" buvo išsiųstas, pagalbos failai buvo neteisingi, nes juose nebuvo naujesnių kodo pakeitimų.Norėdami išspręsti šią problemą, "PowerShell 3" nepateikiama jokių pagalbos failų iš paketo ir yra atnaujinama pagalbos sistema. Tai reiškia, kad prieš tai atliksite ką nors, ko norėsite atsisiųsti naujausius pagalbos failus. Tai galite padaryti atidarę "PowerShell Console" ir paleiskite:

Update-Help

Sveikiname pirmosios "PowerShell" komandos paleidimą!Tiesa ta, kad komanda "Update-help" turi daug daugiau galimybių nei paprasčiausiai ją paleisti, ir norėdami juos peržiūrėti, mes norėsime peržiūrėti komandą.Norėdami peržiūrėti komandą pagalbos, paprasčiausiai perduokite komandų pavadinimą, kuriam reikia pagalbos komandą Get-Help parametrui Name, pavyzdžiui:

Get-Help -Name Update-Help

Jums tikriausiai įdomu, kaip interpretuotiVis tiek šis tekstas, aš turiu omenyje, kodėl po sintaksės skyriuje yra dvi informacijos, ir kodėl visoje vietoje yra tiek daug skliaustų?Pirmas dalykas pirmiausia: priežastis, kodėl sintaksės skyriuje yra du blokai informacijos, yra tai, kad jie rodo skirtingus komandų paleidimo būdus. Tai yra techniškai vadinami parametrų rinkiniai, ir jūs galite naudoti tik vieną kartą( negalima sumaišyti parametrų iš skirtingų rinkinių).Ankstesnėje ekrano kopijoje galite pamatyti, kad aukščiausių parametrų rinkinys turi parametrą SourcePath, o apatinis - ne. Priežastis yra tai, kad naudojate aukščiausią parametrų rinkinį( tą, kuris apima "SourcePath"), jei atnaujinote savo pagalbos failus iš kito jūsų tinkle jau veikiančio kompiuterio, nes jums nereikėtų nurodyti šaltinio kelio, jei jūstiesiog norėjau paimti naujausius "Microsoft" failus.

Norėdami atsakyti į antrąjį klausimą, yra tam tikras sintaksė, kuri padeda failams sekti ir čia yra:

  • lauko skliausteliuose aplink parametro pavadinimą ir jo tipą reiškia, kad jis yra neprivalomas parametras, o be jo komanda veikia gerai.
  • Numerių parametrų pavadinime esantys lauko kronšteinai reiškia, kad parametrai yra padėties parametras.
  • Parametro dešinėje, esančioje kampuose skliaustuose, nurodoma, kokį duomenų tipą laukia parametras.

Nors jūs turėtumėte išmokti skaityti pagalbos failo sintaksę, jei kada nors nesate tikri dėl tam tikro parametro, tiesiog pridėti -Full iki komandos "get help" pabaigos ir pereikite žemyn į parametrų sekciją, kur ji jums parodys šiek tiek daugiau apiekiekvienas parametras.

Get-Help -Name Update-Help -Full

Paskutinis dalykas, kurį reikia žinoti apie pagalbos sistemą, yra tai, kaip galite jį naudoti norint atrasti komandas, o tai iš tikrųjų yra labai lengva. Matote, PowerShell priima keletą simbolių beveik bet kur, taigi naudodami juos kartu su komanda "Get-Help" galite lengvai atrasti komandas. Pavyzdžiui, aš ieškau komandų, susijusių su "Windows Services": "

Get-Help-Name" * paslauga *

Žinoma, visa ši informacija gali būti ne naudinga lazda, bet pasitikėk manimi, pasiimk laiko ir sužinok, kaip naudotispagalbos sistema. Jis visada yra naudingas net pažengusiems scenaristams, kurie tai daro daugelį metų.

Security

Tai nebūtų tinkamas įvedimas, nenurodant saugumo."PowerShell" komandos didžiausias nerimas kelia tai, kad "PowerShell" tampa naujausia ir didžiausiu atakos tašku scenarijų kiddies. Jie įdiegė keletą saugumo priemonių, siekdami įsitikinti, kad taip nėra, todėl pažvelkime į juos.

Patys pagrindiniai apsaugos būdai yra susiję su tuo, kad PS1 failo plėtinys( pratęsimas, naudojamas PowerShell scenarijui žymėti) nėra registruotas "PowerShell" kompiuterio, kuris faktiškai užregistruotas Notepad. Tai reiškia, kad jei du kartus spustelėsite failą, jis bus atidarytas užrašu, o ne paleisti.

Antra, negalima paleisti scenarijų iš apvalkalo, tiesiog įveskite scenarijaus vardą, turite nurodyti visą scenarijaus kelią.Taigi, jei norėtumėte paleisti scenarijų savo C diske, turėtumėte įvesti:

C: \ runme.ps1

Arba, jei jau esate C disko šaknyje, galite naudoti:

. \ Runme.ps1

Galiausiai "PowerShell" turi kažką pavadinimu "Execution Policies", kuris sustabdo jus nuo bet kokio seno scenarijaus paleidimo. Iš tiesų pagal numatytuosius nustatymus negalima paleisti jokių scenarijų ir reikia pakeisti vykdymo politiką, jei norite, kad būtų leidžiama jas paleisti. Yra 4 žinomi vykdymo principai:

  • Restricted : tai numatytoji "PowerShell" konfigūracija.Šis nustatymas reiškia, kad scenarijus negali būti paleistas, nepriklausomai nuo jo parašo. Vienintelis dalykas, kurį galima paleisti PowerShell su šiuo nustatymu, yra atskira komanda.
  • AllSigned: Šis nustatymas leidžia scenarijus paleisti PowerShell. Iš patikimo leidėjo scenarijus turi būti susietas skaitmeninis parašas. Prieš paleisdami scenarijus iš patikimų leidėjų atsiras greitas veiksmas.
  • RemoteSigned : šis nustatymas leidžia paleisti scenarijus, tačiau reikalaujama, kad iš interneto atsisiųsto scenarijaus ir konfigūracijos failų būtų pridedamas skaitmeninis parašas iš patikimo leidėjo. Skriptai, paleisti iš vietos kompiuterio, nereikia pasirašyti. Prieš paleidžiant scenarijų nėra jokių užklausų.
  • Neapribotas : leidžia paleisti nepasirašytus scenarijus, įskaitant visus scenarijus ir konfigūravimo failus, atsisiųstus iš interneto. Tai apima "Outlook" ir "Messenger" failus. Rizika čia veikia scenarijus be parašo ar saugumo. Mes pakartojome, kad jūs niekada mus nenustatėte.

Norėdami sužinoti, kokia yra jūsų dabartinė vykdymo politika, atidarykite PowerShell konsolę ir įveskite:

Get-ExecutionPolicy

Dėl šio kurso ir daugelio kitų aplinkybių "RemoteSigned" politika yra geriausia, todėl eikite į priekį ir pakeiskite savo politiką, naudodamiesi toliau pateiktomis.

Pastaba: tai turės būti padaryta iš padidintos PowerShell konsolės.

Set-ExecutionPolicy RemoteSigned

Tai viskas, kas šiuo metu yra žmonėms, rytoj pamatysite dar daugiau "PowerShell" įdomybių.

Atsisakymas: tinkamas terminas komandai PowerShell yra cmdlet, ir nuo šiol mes naudosim šią teisingą terminiją.Jau atrodė labiau tinkama vadinti juos šio įvado komandomis.

Jei turite kokių nors klausimų, galite tweaks me @taybgibb arba tiesiog palikite komentarą.