Programavimas

„Go pro“: „PowerShell“ galios vartotojo vadovas

Jei kovojote su „Windows 10“, neabejotinai girdėjote apie „PowerShell“. Jei neseniai bandėte padaryti ką nors puikaus su „Win7 / 8.1“, tikriausiai pasirodys ir „PowerShell“. Po daugelio metų pasikliaudami „Windows“ komandine eilute ir išmėtytais paketiniais failais, atėjo laikas atkreipti dėmesį į kažką galingesnio, labiau pritaikomo ir geresnio.

„PowerShell“ yra didžiulis „Windows“ įrankių rinkinio priedas ir gali sukelti šiokią tokią baimę, turint omenyje tą milžiniškumą. Ar tai scenarijų kalba, komandų apvalkalas, grindų vaškas? Ar turite susieti „cmdlet“ su tiesiogine .Net klase, kad galėtumėte paleisti su teikėjais? Ir kodėl visi palaikymo dokumentai kalba apie administratorius - ar aš turiu būti profesionalus „Windows“ administratorius, norėdamas juo naudotis?

Atsipalaiduok. „PowerShell“ yra galingas, tačiau jo nereikia gąsdinti.

Šis vadovas yra skirtas tiems, kurie vykdė „Windows“ komandą arba dvi arba užblokavo paketinį failą. Laikykite tai laipsnišku transformavimu iš „PowerShell“ įdomu į galingą „PowerShell“.

1 žingsnis: pasukite

Pirmas dalykas, kurio jums reikės, yra pati „PowerShell“. Jei naudojate „Windows 10“, jau turite įdiegtą „PowerShell 5“ - naujausią versiją. („Win10 Anniversary Update“ versijoje yra 5.1, bet jūs nesužinosite skirtumo nuo „Fall Update“ 5.0 versijos.) „Windows 8“ ir „8.1“ pristatomos su „PowerShell 4“, o tai yra pakankamai gera, kad kojos sušlaptų. Įdiegti „PowerShell“ sistemoje „Windows 7“ nėra sunku, tačiau tai reikalauja ypatingo atsargumo, o „.Net Framework“ turite įdiegti atskirai. JuanPablo Jofre išsamiai aprašo, kaip MSDN įdiegti WMF 5.0 („Windows Management Framework“), įskaitant „PowerShell“, be įrankių, kurių greičiausiai nenaudosite paleidę.

„PowerShell“ siūlo dvi sąsajas. Pažengę vartotojai naudos pilną GUI, vadinamą „Integrated Scripting Environment“ (ISE). Vis dėlto pradedantiesiems geriausiai tinka „PowerShell Console“, paprasta teksto sąsaja, primenanti „Windows“ komandinę eilutę, ar net DOS 3.2.

Norėdami paleisti „PowerShell“ kaip administratorių iš „Windows 10“, spustelėkite Pradėti ir slinkite žemyn programų sąraše į „Windows PowerShell“. Spustelėkite šią eilutę, dešiniuoju pelės mygtuku spustelėkite „Windows PowerShell“ ir pasirinkite Vykdyti kaip administratorius. „Windows 8.1“ ieškokite „Windows PowerShell“ „Windows“ sistemos aplanke. „Win7“ yra aplanke Priedai. „PowerShell“ galite paleisti kaip „įprastą“ vartotoją, vykdydami tą pačią seką, bet spustelėdami kairįjį pelės mygtuką.

Bet kurioje „Windows“ versijoje galite naudoti „Windows“ paiešką ieškodami „PowerShell“. „Windows 8.1“ ir „Windows 10“ galite įdėti jį į „Ctrl-X“ meniu „Maitinimas“ (dešiniuoju pelės mygtuku spustelėkite tuščią užduočių juostos vietą ir pasirinkite Ypatybės; skirtuke Navigacija pažymėkite langelį Pakeisti komandinę eilutę). Kai jį atidarysite, naudinga prisegti „PowerShell“ prie užduočių juostos. Taip, jums tai labai patiks.

2 žingsnis: įveskite senamadiškas „Windows“ komandas

Nustebtumėte, kiek veikia „Windows“ komandų eilutės sintaksė, kaip tikėtasi „PowerShell“.

Pavyzdžiui, cd keičia katalogus (dar žinomus kaip aplankus) ir rež vis tiek pateikiami visi failai ir aplankai, įtraukti į dabartinį aplanką.

Priklausomai nuo to, kaip paleidžiate „PowerShell“ konsolę, galite pradėti nuo c: \ Windows \ system32 arba c: \ Vartotojai \. Ekrano kopijos pavyzdyje aš naudoju CD .. (atkreipkite dėmesį į tarpą), kad pajudėtumėte vienu lygiu aukštyn, tada paleiskite rež sąraše visus failus ir poaplankius C: \ kataloge.

3 žingsnis: įdiekite pagalbos failus

Komandos patinka cd ir rež nėra vietinės „PowerShell“ komandos. Jie yra slapyvardžiai - tikrų „PowerShell“ komandų pakaitalai. Slapyvardžiai gali būti naudingi tiems iš mūsų, kurie turi pirštų atmintį, kurią sunku įveikti. Bet jie net nepradeda liesti svarbiausių „PowerShell“ dalių.

Norėdami pradėti pajusti patį „PowerShell“, įveskite pagalba po kurio seka jums žinoma komanda. Pavyzdžiui, ekrano kopijoje rašau pagalbos rež.

„PowerShell“ pagalba man tai sako rež yra „PowerShell“ komandos slapyvardis „Get-ChildItem“. Tikrai, jei rašote get-childitem prie PS C: \> raginimą, matote tiksliai tai, ką matėte su rež komandą.

Kaip pažymėta ekrano kopijos apačioje, „PowerShell“ pagalbos failai nėra įdiegiami automatiškai. Norėdami juos gauti (jūs padaryti norite juos gauti), prisijunkite prie „PowerShell“ administratoriaus režimu, tada įveskite pagalba atnaujinti. Pagalbos failų diegimas užtruks kelias minutes, todėl gali trūkti kelių modulių - „NetWNV“ ir „SecureBoot“ žinyno nepavyko įdiegti mano bandomojoje mašinoje. Bet kai baigsite, visa pagalbos sistema bus jums pasirengusi.

Nuo to laiko įveskite gauti pagalbos po kurios seka komanda („cmdlet“ „PowerShell“ kalboje, tariama „komandą leisti“), kuri jums rūpi, ir pamatysite visą šio elemento pagalbą. Pavyzdžiui, get-help get-childitem pateikia santrauką get-childitem galimybės. Tai taip pat ragina įvesti temos variantus. Taigi:

get-help get-childitem -pavyzdžiai

pateikia septynis išsamius naudojimo pavyzdžius get-childitem. „PowerShell“ komanda

get-help get-childitem - išsami informacija

apima tuos septynis pavyzdžius, taip pat išsamų kiekvieno turimo parametro paaiškinimą get-childitem cmdlet.

4 žingsnis: Gaukite pagalbos dėl parametrų

Viduje konors pagalbos rež ekrano kopiją, galbūt pastebėjote, kad yra du sąrašai Sintaksė dėl get-childitem. Tai, kad cmdlet yra dvi atskiros sintaksės, reiškia, kad cmdlet galima paleisti dviem būdais. Kaip išlaikyti atskiras sintakses ir ką reiškia parametrai? Atsakymas yra lengvas, jei žinote triuką.

Norėdami gauti visą išsamią informaciją apie get-childitem cmdlet arba bet kurį kitą cmdlet, naudokite -pilnas parametras, toks:

get-help get-childitem-pilna

Taip pateikiamas eilutės po eilutės sąrašas, ką galite padaryti naudodami „cmdlet“ ir kas gali (ar ne!) Atsitikti. Žr. Ekrano kopiją.

Peržiūrint išsamią parametrų informaciją tai gana lengva pamatyti get-childitem gali būti naudojamas norint gauti „antrinius“ elementus (pvz., poaplankių ar failų pavadinimų pavadinimus) jūsų nurodytoje vietoje, su arba be konkrečių simbolių atitikmenų. Pavyzdžiui:

get-childItem „* .txt“ -recurse

pateikia visų „* .txt“Failus dabartiniame aplanke ir visuose pakatalogiuose (dėl -atsigauti parametras). Kadangi:

get-childitem „HKLM: \ Software“

grąžina visų aukšto lygio registro raktų sąrašą HKEY_LOCAL_MACHINE \ programinė įranga.

Jei kada nors bandėte patekti į registrą naudodami „Windows“ komandų eilutę arba paketinį failą, esu tikras, kad matote, kokia galinga turi būti tokia prieiga.

5 žingsnis: susikurkite pavadinimus

Yra priežastis, kodėl iki šiol matytos cmdlet'ės atrodo vienodos: get-childitem, pagalba atnaujintiir gauti pagalbos visi vadovaujasi ta pačia veiksmažodžio-daiktavardžio sutartimi. Gailestingai, visi „PowerShell“ cmdletai naudoja šią konvenciją, o veiksmažodis yra prieš (vienaskaitos) daiktavardį. Tie iš jūsų, kurie praleidote savaites kovodami dėl nenuosekliai pavadintų VB ir VBA komandų, gali atsikvėpti.

Norėdami sužinoti, kur einame, pažvelkite į keletą dažniausiai naudojamų cmdlet'ų (dėka Edo Wilsono „Hey, Scripting Guy!“ Tinklaraščio). Pradėkite nuo cmdlet, kurie pasiekia jūsų sistemą, ir ištraukite naudingą informaciją, pvz .:

  • nustatyta vieta: Nustato dabartinę darbo vietą į nurodytą vietą
  • gauti turinį: Gauna failo turinį
  • gauti daiktą: Gauna failus ir aplankus
  • copy-item: Nukopijuoja elementą iš vienos vietos į kitą
  • pašalinti daiktą: Ištrina failus ir aplankus
  • gauti procesą: Gauna procesus, vykstančius vietiniame arba nuotoliniame kompiuteryje
  • gauti paslaugą: Paslaugos veikia vietiniame arba nuotoliniame kompiuteryje
  • invoke-webrequest: Gauna turinį iš interneto tinklalapio

Norėdami pamatyti, kaip veikia konkretus cmdletas, naudokite gauti pagalbos, kaip ir

get-help copy-item-pilna

Remdamiesi pagalbos aprašymu, galite lengvai išsiaiškinti, ko nori „cmdlet“. Pavyzdžiui, jei norite nukopijuoti visus failus ir aplankus iš Dokumentai į c: \ temp, jūs naudotumėte:

kopijavimo elementas c: \ vartotojai \ [vartotojo vardas] \ dokumentai \ * c: \ temp

Kai įvesite šią komandą, pamatysite keletą „PowerShell“ aplinkoje įdiegtų malonių elementų. Pavyzdžiui, jei rašote kopija-i ir paspauskite klavišą Tab, „PowerShell“ užpildys Kopijuoti elementą ir erdvė. Jei neteisingai įvedate cmdlet, o „PowerShell“ negali to suprasti, gausite labai išsamų aprašymą, kas nutiko.

Išbandykite šį cmdlet. (Tai gali bandyti priversti jus įdiegti programą, kad perskaitytumėte laukelį „apie“. Jei taip, nepaisykite jo.)

„invoke-webrequest askwoody.com“

Gaunate glaustą tinklalapio turinio deklaracijų, antraščių, vaizdų, nuorodų ir dar daugiau sąrašą. Pažiūrėk, kaip tai veikia? Pranešimas gauti pagalbos sąrašas invoke-webrequest kad invoke-webrequest cmdlet „pateikia formų, nuorodų, vaizdų ir kitų svarbių HTML elementų kolekcijas“ - būtent tai, ką turėtumėte pamatyti savo ekrane.

Kai kurie cmdletai padeda jums valdyti arba grokyti pačią „PowerShell“:

  • gauti komandą: Išvardijami visi galimi cmdletai (tai ilgas sąrašas!)
  • gauti veiksmažodį: Išvardijami visi galimi veiksmažodžiai (kairiosios cmdletų pusės)
  • aiškus šeimininkas: Išvalo pagrindinės programos ekraną

Įvairūs parametrai (atminkite, gauti pagalbos) leidžia suskaidyti komandas ir susiaurinti parinktis, kurios gali būti jums naudingos. Pvz., Norėdami pamatyti visų su „Windows“ paslaugomis dirbančių cmdlet sąrašą, pabandykite tai padaryti:

get-command * -paslauga

Jame išvardyti visi veiksmažodžiai, kurie yra prieinami paslaugą kaip daiktavardis. Štai rezultatas:

„Get-Service“

Nauja paslauga

Paleisti iš naujo - tarnyba

„Resume-Service“

„Set-Service“

„Start-Service“

„Stop-Service“

Sustabdyti-tarnyba

Galite sujungti šias „cmdlet“ su kitomis „cmdlet“, kad įsigilintumėte į beveik bet kurią „PowerShell“ dalį. Štai kur vamzdžiai atsiranda paveikslėlyje.

6 žingsnis: Atneškite vamzdžius

Jei kada nors naudojote „Windows“ komandinę eilutę arba peržengėte paketinį failą, žinote apie peradresavimą ir vamzdžius. Paprasčiau tariant, abu peradresavimai (> personažas) ir pypkės ( | simbolis) paimkite veiksmo išvestį ir priklijuokite jį kitur. Pavyzdžiui, galite peradresuoti a išvestį rež komandą į tekstinį failą arba „vamzdžio“ rezultatą ping komandą į a rasti, norėdami išfiltruoti tokius įdomius rezultatus:

dir> temp.txt

ping askwoody.com | rasti „paketus“> temp2.txt

Antroje viršuje esančioje komandoje rasti komanda ieško eilutės paketus vamzdyno askwoody.com išvestyje ping ir klijuoja visas eilutes, kurios sutampa, vadinamame faile temp2.txt.

Turbūt keista, kad pirmoji iš tų komandų puikiai veikia „PowerShell“. Norėdami paleisti antrąją komandą, norite maždaug taip:

ping askwoody.com | pasirinkite eilutės paketus | iš failo temp2.txt

Peradresavimo ir vamzdžių naudojimas labai praplečia „Windows“ komandų eilutės galimybes: užuot be galo slinkdami ekranu žemyn ieškodami, pavyzdžiui, teksto eilutės, galite sudaryti „Windows“ komandą, kuri patikrins jus.

„PowerShell“ turi galimybę siųsti, bet jis neapsiriboja vien tekstu. Vietoj to „PowerShell“ leidžia perduoti visą objektą iš vieno cmdlet į kitą, kur „objektas“ yra duomenų (vadinamų ypatybėmis) ir veiksmų (metodų), kuriuos galima naudoti duomenims, derinys.

Tačiau sunkiausia yra objektų sulyginimas. Vieno cmdlet pristatomo objekto rūšis turi sutapti su priimančio cmdlet tipo objektais. Tekstas yra labai paprastos rūšies objektas, todėl, jei dirbate su tekstu, elementus išrikiuoti lengva. Kiti objektai nėra tokie elementarūs.

Kaip tai išsiaiškinti? Sveiki atvykę į gauti narį cmdlet. Jei norite sužinoti, kokio tipo objektą gamina cmdlet, perkelkite jį gauti narį. Pavyzdžiui, jei bandote išsiaiškinti kompiuteryje vykstančius procesus ir susiaurinote parinktis iki gauti procesą cmdlet, štai kaip jūs sužinosite, kas yra gauti procesą cmdlet gamina:

gauti procesą | gauti narį

Vykdant šią komandą sukuriamas ilgas sąrašas savybių ir metodų gauti procesą, bet pačioje sąrašo pradžioje galite pamatyti objekto tipą gauti procesą sukuria:

TypeName: System.Diagnostics.Process

Žemiau pateiktas ekrano kopija taip pat jums tai sako gauti procesą turi savybes, vadinamas Rankenos, vardas, NPM, PM, SI, VMir WS.

Jei norite manipuliuoti išvestimi gauti procesą kad galėtumėte su juo dirbti (priešingai nei monitoriuje rodyti ilgą aktyvių procesų sąrašą), turite rasti kitą cmdlet, kuris veiks su Sistema. Diagnostika. Procesas kaip įvestį. Norėdami rasti norimą cmdlet, paprasčiausiai naudokite ... palaukite, kol… „PowerShell“:

get-command -Parametertype System.Diagnostics.Process

Tai sudarys visų tvarkomų cmdlet sąrašą Sistema. Diagnostika. Procesas.

Kai kurie cmdlet'ai yra žinomi dėl beveik bet kokio įvesties. Vyriausiasis tarp jų: kur-objektas. Galbūt painiai, kur-objektas vienas po kito peržiūri kiekvieną vamzdyną, išsiųstą dujotiekiu, ir taiko visus jūsų pageidaujamus pasirinkimo kriterijus. Yra specialus žymeklis, vadinamas $_. tai leidžia jums pereiti kiekvieną vamzdžio elementą po vieną.

Tarkime, kad norite pateikti visų jūsų kompiuteryje vykstančių procesų, vadinamų „svchost”- kalbėdami„ PowerShell “norite suderinti vardas nuosavybėsvchost. Išbandykite šią „PowerShell“ komandą:

gauti procesą | kur objektas {$ _. Pavadinimas -eq „svchost“}

kur-objektas cmdletas žiūri į kiekvieną Sistema. Diagnostika. Procesas elementą, palygina .Vardas tos prekėssvchost“; jei daiktas sutampa, jis išspjauna vamzdžio galą ir įrašomas į jūsų monitorių. Žr. Ekrano kopiją.

$config[zx-auto] not found$config[zx-overlay] not found