Programmēšana

Go pro: PowerShell enerģijas lietotāja rokasgrāmata

Ja esat cīnījies ar Windows 10, jūs neapšaubāmi esat dzirdējis par PowerShell. Ja nesen esat mēģinājis kaut ko iedomāties ar Win7 / 8.1, iespējams, parādīsies arī PowerShell. Pēc vairāku gadu paļaušanās uz Windows komandrindu un izmestajiem pakešdatnēm ir pienācis laiks pievērsties kaut kam jaudīgākam, adaptīvākam un labākam.

PowerShell ir milzīgs papildinājums Windows rīkjoslai, un, ņemot vērā šo milzīgumu, tas var izraisīt nedaudz bailes. Vai tā ir skriptu valoda, komandu apvalks, grīdas vasks? Vai jums ir jāsaista cmdleta ar instantiated .Net klasi, lai palaistu kopā ar pakalpojumu sniedzējiem? Un kāpēc visos atbalsta dokumentos tiek runāts par administratoriem - vai man ir jābūt profesionālam Windows administratoram, lai to izmantotu?

Atpūtieties. PowerShell ir spēcīgs, taču tam nav jābūt biedējošam.

Šī rokasgrāmata ir paredzēta tiem, kuri ir izpildījuši Windows komandu vai divas vai jimmied sērijveida. Uzskatiet to par pakāpenisku pārveidošanu no ziņkārīga PowerShell līdz spējīgam PowerShell.

1. solis: pagrieziet to uz augšu

Pirmā lieta, kas jums būs nepieciešama, ir pati PowerShell. Ja izmantojat sistēmu Windows 10, jums jau ir instalēta PowerShell 5 - jaunākā versija. (Win10 gadadienas atjauninājumam ir 5.1, taču jūs nezināsiet atšķirību ar Fall Update versiju 5.0.) Windows 8 un 8.1 tiek piegādāts ar PowerShell 4, kas ir pietiekami labs, lai jūsu kājas būtu mitras. Instalēt PowerShell operētājsistēmā Windows 7 nav grūti, taču tas prasa īpašu piesardzību - un .Net Framework jāinstalē atsevišķi. JuanPablo Jofre detalizēti apraksta, kā MSDN instalēt WMF 5.0 (Windows Management Framework), kurā ietilpst PowerShell, papildus rīkiem, kurus, iespējams, nelietosiet, sākot.

PowerShell piedāvā divas saskarnes. Pieredzējuši lietotāji izmantos pilnvērtīgu GUI, kas pazīstams kā integrētā skriptu vide (ISE). Iesācējiem tomēr vislabāk noder PowerShell Console, vienkāršs teksta interfeiss, kas atgādina Windows komandrindu, vai pat DOS 3.2.

Lai startētu PowerShell kā administratoru no Windows 10, noklikšķiniet uz Sākt un ritiniet uz leju lietotņu sarakstā uz Windows PowerShell. Noklikšķiniet uz šīs līnijas, ar peles labo pogu noklikšķiniet uz Windows PowerShell un izvēlieties Palaist kā administrators. Operētājsistēmā Windows 8.1 meklējiet Windows PowerShell mapē Windows sistēma. Operētājsistēmā Win7 tā atrodas mapē Piederumi. Jūs varat palaist PowerShell kā “parastu” lietotāju, izpildot to pašu secību, bet ar kreiso klikšķi.

Jebkurā Windows versijā varat izmantot Windows meklēšanu, lai meklētu PowerShell. Operētājsistēmās Windows 8.1 un Windows 10 to varat ievietot savā Ctrl-X “Power menu” (uzdevumjoslā ar peles labo pogu noklikšķiniet uz tukšas vietas un izvēlieties Properties; cilnē Navigation atzīmējiet izvēles rūtiņu Replace Command Prompt). Kad esat to atvēris, ieteicams piestiprināt PowerShell uzdevumjoslā. Jā, tev tas tik ļoti patiks.

2. solis: ierakstiet vecmodīgas Windows komandas

Jūs būsiet pārsteigts, cik daudz Windows komandrindas sintakse darbojas, kā paredzēts PowerShell.

Piemēram, cd maina direktorijus (jeb mapes) un rež joprojām tiek uzskaitīti visi faili un mapes, kas iekļauti pašreizējā mapē.

Atkarībā no tā, kā startējat PowerShell konsoli, varat sākt c: \ Windows \ system32 vai plkst c: \ Lietotāji \. Ekrānuzņēmuma piemērā es izmantoju cd .. (atzīmējiet atstarpi), lai pārvietotos pa vienu līmeni uz augšu, pēc tam palaidiet rež lai uzskaitītu visus failus un apakšmapes C: \ direktorijā.

3. darbība: instalējiet palīdzības failus

Komandas patīk cd un rež nav vietējās PowerShell komandas. Tie ir aizstājvārdi - īstu PowerShell komandu aizstājēji. Pseidonīmi var būt noderīgi tiem no mums, kuriem ir grūti pārvarama pirkstu atmiņa. Bet viņi pat nesāk pieskarties svarīgākajām PowerShell daļām.

Lai sāktu sajust pašu PowerShell, ierakstiet palīdzība seko zināma komanda. Piemēram, ekrānuzņēmumā es ierakstu palīdzēt rež.

PowerShell palīdzība man to saka rež ir komandas PowerShell aizstājvārds Get-ChildItem. Protams, ja jūs rakstāt get-childitem pie PS C: \> uzvedni, jūs redzat tieši to, ko redzējāt ar rež komandu.

Kā norādīts ekrānuzņēmuma apakšdaļā, PowerShell palīdzības faili netiek automātiski instalēti. Lai tos izgūtu (jūs darīt vēlaties tos iegūt), administratora režīmā piesakieties programmā PowerShell un pēc tam ierakstiet update-help. Palīdzības failu instalēšana aizņems vairākas minūtes, un, iespējams, trūkst dažu moduļu - NetWNV un SecureBoot palīdzību manā testa mašīnā neizdevās instalēt. Bet, kad esat pabeidzis, visa palīdzības sistēma būs jūsu rīcībā.

No šī brīža ierakstiet iegūt palīdzību seko komanda (“cmdlet” PowerShell speak, izrunā “command-let”), kas attiecas uz jums, un skatiet visu šī vienuma palīdzību. Piemēram, get-help get-childitem izstrādā kopsavilkumu par get-childitem iespējas. Tas arī liek ierakstīt tēmas variācijas. Tādējādi:

get-help get-childitem-piemēri

ražo septiņus detalizētus lietošanas piemērus get-childitem. PowerShell komanda

get-help get-childitem-detalizēti

ietver šos septiņus piemērus, kā arī detalizētu visu parametru, kas pieejami get-childitem cmdlet.

4. darbība: saņemiet palīdzību par parametriem

Iekš palīdzēt rež ekrānuzņēmums, iespējams, pamanījāt, ka sadaļā ir divi ieraksti Sintakse priekš get-childitem. Tas, ka cmdlet ir divas atsevišķas sintakses, nozīmē, ka cmdlet var palaist divos veidos. Kā jūs uzturat atsevišķas sintakses - un ko nozīmē parametri? Atbilde ir vienkārša, ja zināt triku.

Lai iegūtu visu informāciju par parametriem get-childitem cmdlet vai jebkuru citu cmdlet, izmantojiet -pilns parametrs, piemēram, šis:

get-help get-childitem-pilns

Tādējādi katrā rindā tiek parādīts, ko jūs varat darīt ar cmdlet un kas var notikt (vai var arī nenotikt!). Skatiet ekrānuzņēmumu.

Pārlūkojot detalizētu informāciju par parametriem, to ir diezgan viegli redzēt get-childitem var izmantot, lai izgūtu “bērnu” vienumus (piemēram, apakšmapju nosaukumus vai failu nosaukumus) jūsu norādītajā vietā, ar vai bez īpašām rakstzīmju atbilstībām. Piemēram:

get-childItem “* .txt” -recurse

izgūst visu “* .txtFailus pašreizējā mapē un visās apakšmapēs (sakarā ar -atkārtot parametrs). Tā kā:

get-childitem “HKLM: \ Software”

atgriež visu augsta līmeņa reģistra atslēgu sarakstu HKEY_LOCAL_MACHINE \ Programmatūra.

Ja esat kādreiz mēģinājis iekļūt reģistrā, izmantojot Windows komandrindu vai pakešfailu, esmu pārliecināts, ka redzat, cik jaudīgai jābūt šāda veida piekļuvei.

5. solis: Nosakiet nosaukumus

Ir iemesls, kāpēc līdz šim redzētie cmdleti izskatās vienādi: get-childitem, update-help, un iegūt palīdzību visi ievēro vienu un to pašu darbības vārdu lietvārdu konvenciju. Žēlīgi, ka visos PowerShell cmdletos tiek izmantota šī konvencija ar darbības vārdu pirms (vienskaitļa) lietvārda. Tie no jums, kas nedēļas pavadīja, cīnoties par nekonsekventi nosauktajām VB un VBA komandām, var atviegloti uzelpot.

Lai redzētu, kurp dodamies, apskatiet dažus no visbiežāk izmantotajiem cmdletiem (pateicoties Ed Wilson's Hey, Scripting Guy! Emuāram). Sāciet ar cmdlet, kas iekļūst jūsu sistēmā, un izvelciet noderīgu informāciju, piemēram:

  • noteiktā atrašanās vieta: Iestata pašreizējo darba vietu noteiktā vietā
  • get-content: Iegūst faila saturu
  • get-item: Iegūst failus un mapes
  • kopijas vienums: Kopē vienumu no vienas vietas uz citu
  • noņemt vienumu: Izdzēš failus un mapes
  • get-process: Iegūst procesus, kas darbojas lokālā vai attālā datorā
  • saņemt pakalpojumu: Pakalpojumi tiek palaisti lokālā vai attālā datorā
  • izsaukt-webrequest: Iegūst saturu no tīmekļa vietnes internetā

Lai redzētu, kā darbojas konkrēts cmdlet, izmantojiet iegūt palīdzību, kā

get-help copy-item-pilns

Pamatojoties uz tā palīdzības aprakstu, varat viegli saprast, ko vēlas cmdlet. Piemēram, ja vēlaties kopēt visus failus un mapes no Dokumenti uz c: \ temp, jūs izmantojat:

kopijas vienums c: \ lietotāji \ [lietotājvārds] \ dokumenti \ * c: \ temp

Rakstot šo komandu, jūs redzēsiet dažus jaukus pieskārienus, kas iebūvēti PowerShell vidē. Piemēram, ja rakstāt kopija-i un nospiediet taustiņu Tab, lai aizpildītu PowerShell Kopēt vienumu un atstarpe. Ja kļūdaini ievadāt cmdlet un PowerShell to nevar saprast, jūs saņemat ļoti rūpīgu aprakstu par nepareizo darbību.

Izmēģiniet šo cmdlet. (Tas var mēģināt likt jums instalēt programmu, lai lasītu lodziņu “Par”. Ja tā, ignorējiet to.)

invoke-webrequest askwoody.com

Jūs saņemsiet īsu tīmekļa lapas satura deklarāciju, galvenes, attēlu, saišu un citu sarakstu. Redzi, kā tas darbojas? Paziņojums iegūt palīdzību iekļaušana sarakstā izsaukt-webrequest ka izsaukt-webrequest cmdlet “atgriež veidlapu, saišu, attēlu un citu nozīmīgu HTML elementu kolekcijas” - tieši to, kas jums jāredz ekrānā.

Daži cmdlet palīdz jums kontrolēt vai grokēt pašu PowerShell:

  • get-command: Uzskaita visus pieejamos cmdletus (tas ir garš saraksts!)
  • get-verb: Uzskaita visus pieejamos darbības vārdus (cmdletu kreisās puses)
  • skaidrs-saimnieks: Notīra displeju resursdatora programmā

Dažādi parametri (atcerieties, iegūt palīdzību) ļauj mazināt komandas un sašaurināt iespējas, kas jums var būt noderīgas. Piemēram, lai skatītu visu cmdlet sarakstu, kas darbojas ar Windows pakalpojumiem, izmēģiniet šo:

get-command * -serviss

Tajā ir uzskaitīti visi darbības vārdi, kas ir pieejami apkalpošana kā lietvārds. Lūk, rezultāts:

Get-Service

Jauns pakalpojums

Restart-Service

Resume-Service

Set-Service

Start-Service

Stop-Service

Apturēt pakalpojumu

Varat apvienot šīs cmdlet ar citām cmdlet, lai izraktos gandrīz jebkurā PowerShell daļā. Tur attēlā parādās caurules.

6. solis: ielieciet caurules

Ja esat kādreiz izmantojis Windows komandrindu vai ielaidis paketes failu, jūs zināt par novirzīšanu un caurulēm. Vienkārši sakot, abas novirzīšanas (> raksturs) un pīpes ( | raksturs) ņem darbības rezultātu un pielīmē to citur. Jūs varat, piemēram, novirzīt a izvadi rež komandu teksta failam vai “caurules” rezultātu a ping komandu a atrast, lai filtrētu interesantus rezultātus, piemēram:

dir> temp.txt

ping askwoody.com | atrast “paketes”> temp2.txt

Iepriekš otrajā komandā atrast komanda meklē virkni paciņas askwoody.com cauruļvadā ping un visas atbilstošās rindas salīmē failā ar nosaukumu temp2.txt.

Varbūt pārsteidzoši, ka pirmā no šīm komandām darbojas lieliski programmā PowerShell. Lai palaistu otro komandu, vēlaties kaut ko līdzīgu:

ping askwoody.com | atlasiet virknes paketes | ārpus faila temp2.txt

Novirzīšanas un cauruļu izmantošana ievērojami paplašina Windows komandrindas iespējas: tā vietā, lai bezgalīgi ritinātu uz leju ekrānā, piemēram, meklējot teksta virkni, varat salikt cauruļvadu Windows komandu, kas pārbauda jūsu vietā.

PowerShell ir cauruļvadu iespēja, taču tā neaprobežojas tikai ar tekstu. Tā vietā PowerShell ļauj jums nodot visu objektu no vienas cmdlet uz nākamo, kur “objekts” ir datu (ko sauc par īpašībām) un darbību (metožu) kombinācija, kuras var izmantot datos.

Tomēr vissmagākā ir objektu izlīdzināšana. Viena cmdlet piegādātā objekta veidam jāatbilst objektu veidiem, kurus akceptē saņēmējs. Teksts ir ļoti vienkāršs objekta veids, tādēļ, ja strādājat ar tekstu, ir viegli ierindot vienumus. Citi objekti nav tik elementāri.

Kā to izdomāt? Laipni lūdzam vietnē get-member cmdlet. Ja vēlaties uzzināt, kāda veida objektu rada cmdlet, izvelciet to cauri get-member. Piemēram, ja mēģināt noskaidrot datorā notiekošos procesus un esat sašaurinājis iespējas līdz get-process cmdlet, lūk, kā jūs uzzināt, kas ir get-process cmdlet rada:

get-process | get-member

Palaidot šo komandu, tiek izveidots garš īpašību un metožu saraksts get-process, bet pašā saraksta sākumā jūs varat redzēt objekta tipu get-process rada:

TypeName: System.Diagnostics.Process

Zemāk esošais ekrānuzņēmums to arī jums saka get-process ir īpašības, kuras sauc Rokturi, Nosaukums, NPM, PM, SI, VM, un WS.

Ja vēlaties manipulēt ar get-process Lai jūs varētu strādāt ar to (pretēji tam, lai monitorā parādītu garu aktīvo procesu sarakstu), jums jāatrod cits cmdlet, kas darbosies ar Sistēma. Diagnostika. Process kā ievadi. Lai atrastu vēlamo cmdlet, vienkārši izmantojiet ... pagaidiet to ... PowerShell:

get-command -Parametertype System.Diagnostics.Process

Tādējādi tiek izveidots saraksts ar visām cmdlet, kuras var apstrādāt Sistēma. Diagnostika. Process.

Daži cmdleti ir slaveni ar gandrīz jebkura veida ievadi. Galvenais no tiem: kur-objekts. Varbūt mulsinoši, kur-objekts cilpas pa katru cauruļvadā nosūtīto vienumu pa vienam un piemēro visus pieprasītos atlases kritērijus. Ir īpašs marķieris, ko sauc $_. kas ļauj pa vienam iziet cauri katram caurules elementam.

Pieņemsim, ka vēlaties izveidot sarakstu ar visiem procesiem, kas darbojas jūsu datorā un kurus sauc par “svchost”- runājot PowerShell, vēlaties sakrist ar Nosaukums īpašumssvchost. Izmēģiniet šo PowerShell komandu:

get-process | where-object {$ _. Nosaukums -eq “svchost”}

The kur-objekts cmdlet aplūko katru Sistēma. Diagnostika. Process vienumu, salīdzina .Nosaukums šīs preces uz “svchost”; ja vienums sakrīt, tas tiek izspļauts caurules galā un ierakstīts jūsu monitorā. Skatiet ekrānuzņēmumu.

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