Programiranje

Go pro: Uporabniški priročnik za PowerShell

Če ste se borili z operacijskim sistemom Windows 10, ste nedvomno že slišali za PowerShell. Če ste s Win7 / 8.1 v zadnjem času poskušali narediti kaj modnega, je verjetno prišel tudi PowerShell. Po letih zanašanja na ukazno vrstico sistema Windows in združene paketne datoteke je čas, da si ogledate nekaj močnejšega, bolj prilagodljivega - boljšega.

PowerShell je izjemen dodatek orodjarni Windows in lahko zaradi te ogromnosti sproži nekoliko strahu. Je to skriptni jezik, ukazna lupina, talni vosek? Ali morate povezati cmdlet s primernim .Net razredom za zagon s ponudniki? In zakaj vsi dokumenti o podpori govorijo o skrbnikih - ali moram biti profesionalni skrbnik sistema Windows, da ga lahko uporabim?

Sprostite se PowerShell je zmogljiv, vendar ga ni treba zastraševati.

Naslednji vodnik je namenjen tistim, ki so zagnali ukaz Windows ali dva ali jim dodelili paketno datoteko. Razmislite o postopni preobrazbi iz PowerShell radovedne v PowerShell.

1. korak: Izvlecite ga

Prva stvar, ki jo boste potrebovali, je PowerShell sama. Če uporabljate Windows 10, imate že nameščeno PowerShell 5 - najnovejšo različico. (Win10 Anniversary Update ima 5.1, vendar ne boste vedeli razlike pri jesenski posodobitvi 5.0.) Windows 8 in 8.1 sta na voljo z PowerShell 4, ki je dovolj dober, da si namočite noge. Namestitev PowerShell-a v sistem Windows 7 ni težavna, vendar je potrebna posebna skrb - in .Net Framework morate namestiti ločeno. JuanPablo Jofre podrobno opisuje, kako namestiti WMF 5.0 (Windows Management Framework), ki vključuje PowerShell, poleg orodij, ki jih verjetno ne boste uporabili ob zagonu, na MSDN.

PowerShell ponuja dva vmesnika. Napredni uporabniki se bodo odločili za popoln GUI, znan kot integrirano skriptno okolje (ISE). Začetnike pa najbolje uporablja PowerShell Console, preprost besedilni vmesnik, ki spominja na ukazno vrstico sistema Windows ali celo DOS 3.2.

Če želite zagnati PowerShell kot skrbnik v sistemu Windows 10, kliknite Start in se pomaknite po seznamu aplikacij do Windows PowerShell. Kliknite to vrstico, z desno tipko miške kliknite lupino Windows PowerShell in izberite Zaženi kot skrbnik. V operacijskem sistemu Windows 8.1 poiščite lupino Windows PowerShell v sistemski mapi Windows. V Win7 je v mapi Dodatki. PowerShell lahko zaženete kot "običajnega" uporabnika, tako da sledite istemu zaporedju, vendar z levim klikom.

V kateri koli različici sistema Windows lahko z iskanjem sistema Windows poiščete PowerShell. V operacijskih sistemih Windows 8.1 in Windows 10 ga lahko vstavite v svoj meni za vklop Ctrl-X (z desno miškino tipko kliknite prazno mesto v opravilni vrstici in izberite Lastnosti; na zavihku Navigacija potrdite polje Zamenjaj ukazni poziv). Ko jo odprete, je dobro, da PowerShell pripnete na opravilno vrstico. Ja, tako všeč vam bo.

2. korak: Vnesite staromodne ukaze za Windows

Presenečeni bi bili nad tem, kako sintaksa ukazne vrstice sistema Windows deluje po pričakovanjih v PowerShell.

Na primer, cd spreminja imenike (aka mape) in dir še vedno navaja vse datoteke in mape, ki so vključene v trenutno mapo.

Odvisno od tega, kako zaženete konzolo PowerShell, lahko začnete pri c: \ Windows \ system32 ali ob c: \ Uporabniki \. V primeru posnetka zaslona uporabljam cd .. (upoštevajte presledek), da se premaknete za eno stopnjo navzgor, nato zaženite dir za seznam vseh datotek in podmap v C: \ imenik.

3. korak: Namestite datoteke s pomočjo

Ukazi kot cd in dir niso izvorni ukazi PowerShell. So vzdevki - nadomestki za prave ukaze PowerShell. Vzdevki so lahko priročni za tiste, ki imamo težko premagati prstni spomin. Toda niti najpomembnejših delov PowerShell se ne začnejo dotikati.

Če želite začeti dobivati ​​občutek za PowerShell, vnesite pomoč čemur sledi ukaz, ki ga poznate. Na primer, na posnetku zaslona vtipkam pomoč dir.

Pomoč PowerShell mi to pove dir je vzdevek za ukaz PowerShell Get-ChildItem. Seveda, če tipkate get-childitem pri PS C: \> v pozivu vidite natančno tisto, kar ste videli z dir ukaz.

Kot je navedeno na dnu posnetka zaslona, ​​se datoteke za pomoč za PowerShell ne namestijo samodejno. Da jih pridobite (vi naredi jih želite dobiti), se v skrbniškem načinu prijavite v PowerShell in nato vnesite posodobitev-pomoč. Namestitev datotek s pomočjo bo trajala nekaj minut in morda manjka nekaj modulov - Pomoč za NetWNV in SecureBoot se ni uspela namestiti na moji preizkusni napravi. Ko pa končate, vam bo na voljo popoln sistem pomoči.

Od tega trenutka naprej vnesite Poišči pomoč čemur sledi ukaz ("cmdlet" v PowerShell govori, izgovorjeno "command-let"), ki vas zadeva, in si oglejte vso pomoč za ta element. Na primer, get-help get-childitem pripravi povzetek get-childitem opcije. Prav tako vas bo pozval, da vnesete različice teme. Tako je naslednje:

get-help get-childitem -examples

pripravi sedem podrobnih primerov uporabe get-childitem. Ukaz PowerShell

get-help get-childitem -detailed

vključuje teh sedem primerov ter podrobno razlago vseh parametrov, ki so na voljo za get-childitem cmdlet.

4. korak: Poiščite pomoč glede parametrov

V pomoč dir posnetek zaslona, ​​ste morda opazili, da sta pod SINTAKS za get-childitem. Dejstvo, da obstajata dve ločeni skladnji za ukaz cmdlet, pomeni, da obstajata dva načina za zagon ukaznika. Kako ohraniti ločeni sintaksi - in kaj pomenijo parametri? Odgovor je enostaven, če poznate trik.

Da bi dobili vse podrobnosti o parametrih za get-childitem cmdlet ali kateri koli drug cmdlet, uporabite -poln parameter, kot je ta:

get-help get-childitem -full

Tako dobite vrstni seznam, kaj lahko naredite s cmdletom in kaj se lahko (ali pa ne!) Zgodi. Oglejte si posnetek zaslona.

Prelistavanje podrobnosti parametrov je razmeroma enostavno videti get-childitem se lahko uporablja za pridobivanje "podrejenih" elementov (kot so imena podmap ali imen datotek) na mestu, ki ste ga določili, z ali brez ujemanja določenih znakov. Na primer:

get-childItem “* .txt” -recurse

pridobi seznam vseh* .txt"V trenutni mapi in vseh podmapah (zaradi -poklic parameter). Ob upoštevanju naslednjega:

get-childitem “HKLM: \ Software”

vrne seznam vseh registrskih ključev na visoki ravni v HKEY_LOCAL_MACHINE \ Programska oprema.

Če ste kdaj poskusili vstopiti v register z ukazno vrstico sistema Windows ali paketno datoteko, sem prepričan, da lahko vidite, kako močan mora biti takšen dostop.

5. korak: Zabijte imena

Obstaja razlog, da smo komandne plošče, ki smo jih videli do zdaj, videti enako: get-childitem, posodobitev-pomoč, in Poišči pomoč vsi sledijo isti glagolsko-samostalniški konvenciji. K sreči vsi komandirji PowerShella uporabljajo to konvencijo z glagolom pred samostalnikom (ednino). Tisti, ki ste se tedne borili za nedosledno imenovana ukaza VB in VBA, si lahko oddahnete.

Če si želite ogledati, kam gremo, si oglejte nekaj najpogostejših komandnih gumbov (zahvaljujoč blogu Eda Wilsona Hey, Scripting Guy!). Začnite s komandnimi gumbi, ki segajo v vaš sistem, in izvlecite koristne informacije, na primer naslednje:

  • set-location: Nastavi trenutno delovno lokacijo na določeno lokacijo
  • get-content: Pridobi vsebino datoteke
  • get-item: Pridobi datoteke in mape
  • copy-item: Kopira element z ene lokacije na drugo
  • odstrani-element: Izbriše datoteke in mape
  • get-proces: Pridobi procese, ki se izvajajo v lokalnem ali oddaljenem računalniku
  • get-service: Pridobi storitve, ki se izvajajo v lokalnem ali oddaljenem računalniku
  • invoke-webrequest: Pridobi vsebino s spletne strani v internetu

Če si želite ogledati, kako določena ukazna miza deluje, uporabite Poišči pomoč, kot v

get-help copy-item -full

Na podlagi opisa pomoči lahko zlahka ugotovite, kaj želi cmdlet. Na primer, če želite kopirati vse datoteke in mape iz Dokumenti do c: \ temp, bi uporabili:

copy-item c: \ users \ [uporabniško ime] \ documents \ * c: \ temp

Ko vnesete ta ukaz, boste videli nekaj lepih dotikov, vgrajenih v okolje PowerShell. Na primer, če tipkate copy-i in pritisnite tipko Tab, PowerShell izpolni Kopiraj-element in prostor. Če vtipkate ukaz cmdlet in PowerShell tega ne more ugotoviti, dobite zelo natančen opis, kaj je šlo narobe.

Preizkusite ta cmdlet. (Morda vas bo poskušal namestiti program, da preberete polje »približno«. Če je tako, ga prezrite.)

invoke-webrequest askwoody.com

Prejmete kratek seznam izjav vsebine spletne strani, glav, slik, povezav in še več. Poglejte, kako to deluje? Obvestilo v Poišči pomoč seznam za invoke-webrequest da invoke-webrequest cmdlet »vrne zbirke obrazcev, povezav, slik in drugih pomembnih elementov HTML« - natanko tisto, kar bi morali videti na zaslonu.

Nekatere komandne komande vam pomagajo nadzorovati ali preučiti sam PowerShell:

  • get-command: Našteje vse razpoložljive ukazne gumbe (dolg seznam!)
  • get-glagol: Seznam vseh razpoložljivih glagolov (leve polovice komandnih gumbov)
  • jasen gostitelj: Počisti zaslon v gostiteljskem programu

Različni parametri (ne pozabite, Poišči pomoč) vam omogočajo, da zmanjšate ukaze in zožite možnosti, ki so vam lahko koristne. Če si želite na primer ogledati seznam vseh ukazov, ki delujejo s storitvami Windows, poskusite to:

get-command * -service

Navede vse glagole, ki so na voljo z storitev kot samostalnik. Tu je rezultat:

Get-Service

Nova storitev

Ponovni zagon storitve

Nadaljuj-storitev

Set-Service

Start-Service

Stop-Service

Suspend-Service

Te ukazne gumbe lahko kombinirate z drugimi ukaznimi mizami, da se poglobite v skoraj kateri koli del PowerShell-a. Tam se na sliki pojavijo cevi.

6. korak: Vstavite cevi

Če ste že kdaj uporabili ukazno vrstico sistema Windows ali se premešali po paketni datoteki, veste o preusmerjanju in kanalih. Preprosto povedano, preusmeritev (> znak) in cevi ( | znak) vzemite izhod iz akcije in jo prilepite nekam drugam. Izhod a lahko na primer preusmerite dir ukaz v besedilno datoteko ali "pipe" rezultat a ping ukaz v najti, da filtriramo zanimive rezultate, na primer tako:

dir> temp.txt

ping askwoody.com | poiščite “pakete”> temp2.txt

V drugem zgornjem ukazu je najti ukaz išče niz paketov v cevnem izhodu askwoody.com ping in prilepi vse vrstice, ki se ujemajo v datoteki z imenom temp2.txt.

Morda presenetljivo je, da prvi od teh ukazov v PowerShell-u deluje dobro. Če želite zagnati drugi ukaz, želite nekaj takega:

ping askwoody.com | paketi izbirnega niza | zunanja datoteka temp2.txt

Uporaba preusmeritve in cevi močno razširi zmogljivosti ukazne vrstice sistema Windows: Namesto da bi se na primer neskončno pomikali po zaslonu in iskali besedilni niz, lahko sestavite cevni ukaz Windows, ki za vas opravi preverjanje.

PowerShell ima možnost cevovoda, vendar ni omejen na besedilo. Namesto tega PowerShell omogoča prenos celotnega predmeta iz enega ukaznega gumba v drugega, pri čemer je »objekt« kombinacija podatkov (imenovane lastnosti) in dejanj (metod), ki jih je mogoče uporabiti na podatkih.

Težji del pa je v poravnavi predmetov. Vrsta predmeta, ki ga dostavi en cmdlet, se mora ujemati s vrstami predmetov, ki jih sprejme cmdlet, ki ga prejme. Besedilo je zelo preprosta vrsta predmeta, zato je, če delate z besedilom, postavitev elementov enostavno. Drugi predmeti niso tako osnovni.

Kako ugotoviti? Dobrodošli v get-member cmdlet. Če želite vedeti, katero vrsto predmeta ukazna vrstica ustvari, jo napeljite skozi get-member. Če na primer poskušate ugotoviti procese, ki se izvajajo v računalniku, in ste možnosti zožili na get-proces cmdlet, tukaj boste izvedeli, kaj je get-proces cmdlet proizvaja:

postopek pridobivanja | get-member

Zagon tega ukaza ustvari dolg seznam lastnosti in metod za get-proces, a na samem začetku seznama lahko vidite vrsto predmeta, ki je get-proces ustvarja:

TypeName: System.Diagnostics.Process

To vam pove tudi spodnji posnetek zaslona get-proces ima imenovane lastnosti Ročaji, Ime, NPM, PM, SI, VM, in WS.

Če želite manipulirati z izhodno datoteko get-proces da boste lahko delali z njim (v nasprotju s tem, da bo na monitorju prikazoval dolg seznam aktivnih procesov), morate poiskati drugo ukazno mapo, ki bo delovala z System.Diagnostics.Process kot vhod. Če želite poiskati pripravljeni cmdlet, preprosto uporabite… počakajte… PowerShell:

get-command -Parametertype System.Diagnostics.Process

Tako dobite seznam vseh komandnih mest, ki jih lahko obvladate System.Diagnostics.Process.

Nekatere komandne plošče so znane po tem, da jemljejo skoraj kakršen koli vnos. Glavni med njimi: kje-objekt. Mogoče zmedeno, kje-objekt en za drugim pregleduje vsak element, poslan po cevovodu, in uporabi poljubna izbirna merila, ki jih zahtevate. Obstaja posebna oznaka, imenovana $_. ki vam omogoča, da stopite skozi vsak element v cevi, enega za drugim.

Recimo, da ste želeli pripraviti seznam vseh procesov, ki se izvajajo v vaši napravi in ​​se imenujejo »svchost”- v PowerShell govori želite, da se ujema z a Ime lastninasvchost. Preizkusite ta ukaz PowerShell:

postopek pridobivanja | kje-objekt {$ _. Ime -eq “svchost”}

The kje-objekt cmdlet si ogleda vsakega System.Diagnostics.Process postavka, primerja .Ime tega predmeta na “svchost"; če se element ujema, izpljune konec cevi in ​​se vnese na vaš monitor. Oglejte si posnetek zaslona.

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