Ohjelmointi

Go pro: Tehokäyttäjän opas PowerShelliin

Jos olet kamppaillut Windows 10: n kanssa, olet epäilemättä kuullut PowerShellistä. Jos olet äskettäin yrittänyt tehdä jotain hienoa Win7 / 8.1: n kanssa, myös PowerShell tulee todennäköisesti esiin. Kun olet vuosien ajan luottanut Windowsin komentoriviin ja heittänyt yhteen eräajotiedostoja, on aika asettaa tähtäimet tehokkaammalle, mukautuvammalle - paremmalle.

PowerShell on valtava lisäys Windowsin työkalupakettiin, ja se voi aiheuttaa hieman pelkoa, kun otetaan huomioon tämä valtavuus. Onko se komentosarjakieli, komentokuori, lattiavaha? Pitääkö sinun linkittää cmdlet-tiedosto instantisoituun .Net-luokkaan, jotta voit suorittaa palveluntarjoajien kanssa? Ja miksi kaikki tukidokumentit puhuvat järjestelmänvalvojista - onko minun oltava ammattimainen Windows-järjestelmänvalvoja voidaksesi käyttää sitä?

Rentoutua. PowerShell on tehokas, mutta sen ei tarvitse olla pelottava.

Seuraava opas on tarkoitettu niille, jotka ovat suorittaneet Windows-komennon tai kaksi tai hämmentäneet eräajotiedostoa. Pidä sitä vaiheittaisena muutoksena utelias PowerShellistä PowerShell-yhteensopivaksi.

Vaihe 1: Käynnistä se

Ensimmäinen tarvitsemasi asia on itse PowerShell. Jos käytät Windows 10: tä, sinulla on jo asennettuna PowerShell 5 - uusin versio. (Win10 Anniversary Update -sovelluksessa on 5.1, mutta et tiedä eroa Fall Update -sovelluksen 5.0 kanssa.) Windows 8 ja 8.1 toimitetaan PowerShell 4: n kanssa, mikä on tarpeeksi hyvä jalkojesi kastelemiseen. PowerShellin asentaminen Windows 7: een ei ole vaikeaa, mutta se vaatii erityistä varovaisuutta - ja .Net Framework on asennettava erikseen. JuanPablo Jofre kertoo kuinka WMF 5.0 (Windows Management Framework), joka sisältää PowerShellin, asennetaan työkalujen lisäksi, joita et todennäköisesti käytä aloittaessasi, MSDN: ään.

PowerShell tarjoaa kaksi liitäntää. Edistyneet käyttäjät käyttävät täysimittaista käyttöliittymää, joka tunnetaan nimellä Integrated Scripting Environment (ISE). Aloittelijoille palvelee kuitenkin parhaiten PowerShell Console, yksinkertainen tekstirajapinta, joka muistuttaa Windowsin komentoriviä, tai jopa DOS 3.2.

Voit aloittaa PowerShellin järjestelmänvalvojana Windows 10: stä napsauttamalla Käynnistä ja vierittämällä sovellusten luetteloa alaspäin Windows PowerShelliin. Napsauta sitä riviä, napsauta hiiren kakkospainikkeella Windows PowerShell ja valitse Suorita järjestelmänvalvojana. Etsi Windows 8.1: ssä Windows PowerShell Windows System -kansiosta. Win7: ssä se on Tarvikkeet-kansiossa. Voit suorittaa PowerShellin "normaalina" käyttäjänä seuraamalla samaa järjestystä mutta vasemmalla napsautuksella.

Missä tahansa Windows-versiossa voit etsiä PowerShelliä Windows-haulla. Windows 8.1: ssä ja Windows 10: ssä voit laittaa sen Ctrl-X: n "Virta-valikkoon" (napsauta hiiren kakkospainikkeella tyhjää kohtaa tehtäväpalkissa ja valitse Ominaisuudet; valitse Navigointi-välilehdessä Korvaa komentokehote). Kun se on auki, on hyvä kiinnittää PowerShell tehtäväpalkkiin. Kyllä, pidät siitä niin paljon.

Vaihe 2: Kirjoita vanhanaikaiset Windows-komennot

Olisit hämmästynyt siitä, kuinka paljon Windowsin komentorivisyntaksia toimii odotetusti PowerShellissä.

Esimerkiksi, CD muuttaa hakemistoja (alias kansioita) ja ohj luetteloi edelleen kaikki nykyiseen kansioon sisältyvät tiedostot ja kansiot.

PowerShell-konsolin käynnistystavasta riippuen voit aloittaa osoitteesta c: \ Windows \ system32 tai c: \ Käyttäjät \. Kuvakaappausesimerkissä käytän cd .. (huomaa välilyönti) siirtyäksesi ylöspäin kerrallaan, sitten ajaa ohj luetteloida kaikki tiedostot ja alikansiot C: \ hakemistoon.

Vaihe 3: Asenna ohjetiedostot

Komennot kuten CD ja ohj eivät ole alkuperäisiä PowerShell-komentoja. Ne ovat aliaksia - korvaavat todelliset PowerShell-komennot. Aliakset voivat olla käteviä niille meistä, joiden sormimuisti on vaikea voittaa. Mutta he eivät edes ala koskettaa PowerShellin tärkeimpiä osia.

Aloita tuntea itse PowerShell, kirjoittamalla auta seuraa komento, jonka tiedät. Esimerkiksi kuvakaappauksessa kirjoitan apua ohj.

PowerShell-ohje kertoo sen minulle ohj on alias PowerShell-komennolle Get-ChildItem. Tosiaan, jos kirjoitat get-childitem klo PS C: \> kehote, näet tarkalleen mitä näit ohj komento.

Kuten kuvakaappauksen alaosassa todettiin, PowerShellin ohjetiedostoja ei asenneta automaattisesti. Niiden hakemiseksi (sinä tehdä haluat saada ne), kirjaudu PowerShelliin järjestelmänvalvojan tilassa ja kirjoita sitten update-help. Ohjetiedostojen asentaminen kestää useita minuutteja, ja muutamia moduuleja saattaa puuttua - NetWNV: n ja SecureBootin ohjeiden asennus epäonnistui testikoneellani. Mutta kun olet valmis, koko apujärjestelmä on käytettävissäsi.

Kirjoita siitä lähtien Hae apua seuraa komento ("cmdlet" PowerShell-puheessa, lausutaan "command-let"), joka koskee sinua ja näet kaikki kyseisen tuotteen ohjeet. Esimerkiksi, get-help get-childitem tuottaa yhteenvedon get-childitem vaihtoehtoja. Se kehottaa myös kirjoittamaan muunnelmia teemasta. Näin ollen seuraavat:

get-help get-childitem -esimerkkejä

tuottaa seitsemän yksityiskohtaista esimerkkiä käytöstä get-childitem. PowerShell-komento

get-help get-childitem -detailed

sisältää nämä seitsemän esimerkkiä sekä yksityiskohtaisen selityksen jokaisesta parametrille käytettävissä olevasta parametrista get-childitem cmdlet.

Vaihe 4: Hanki apua parametreista

vuonna apua ohj kuvakaappaus, olet ehkä huomannut, että alla on kaksi ilmoitusta SYNTAKSI varten get-childitem. Se, että cmdlet-sovelluksessa on kaksi erillistä syntaksia, tarkoittaa sitä, että cmdlet-komentoa voidaan käyttää kahdella tavalla. Kuinka pidät syntaksit erillään - ja mitä parametrit tarkoittavat? Vastaus on helppo, jos tiedät temppun.

Saadaksesi kaikki yksityiskohdat get-childitem cmdlet-tiedostoa tai muuta cmdlet-tiedostoa, käytä -koko parametri, kuten tämä:

get-help get-childitem-täysi

Se tuottaa rivi riviltä luettelon siitä, mitä voit tehdä cmdlet-sovelluksella ja mitä voi tapahtua (tai ei!) Katso kuvakaappaus.

Parametrien yksityiskohtia on melko helppo nähdä get-childitem voidaan käyttää "lapsi" -kohteiden (kuten alikansioiden tai tiedostojen nimien) noutamiseen määritetystä sijainnista, joko tietyillä merkkitavoilla tai ilman. Esimerkiksi:

get-childItem “* .txt” -recurse

hakee luettelon kaikista* .txt”Tiedostot nykyisessä kansiossa ja kaikissa alikansioissa (johtuen -toistua parametri). Seuraavat:

get-childitem "HKLM: \ Ohjelmisto"

palauttaa luettelon kaikista korkean tason rekisteriavaimista HKEY_LOCAL_MACHINE \ Ohjelmisto.

Jos olet joskus yrittänyt päästä rekisteriin Windowsin komentorivillä tai erätiedostolla, voit varmasti nähdä, kuinka tehokkaan tällaisen pääsyn on oltava.

Vaihe 5: Naulaa nimet alas

Tähän mennessä näkemämme cmdletit näyttävät samalta: get-childitem, update-helpja Hae apua kaikki noudattavat samaa verbi-substantiivisopimusta. Armollisesti kaikki PowerShellin cmdletit käyttävät tätä käytäntöä, ja verbi edeltää (yksikkö) substantiivia. Ne teistä, jotka viettivät viikkoja kamppailemalla epäjohdonmukaisesti nimettyjen VB- ja VBA-komentojen kanssa, voivat hengittää helpotusta.

Jos haluat nähdä, mihin olemme menossa, tutustu yleisimpiin cmdlet-tiedostoihin (kiitos Ed Wilsonin Hey, Scripting Guy! -Blogista). Aloita järjestelmään ulottuvilla cmdlet-tiedostoilla ja poimi hyödyllisiä tietoja, kuten seuraava:

  • asetettu sijainti: Asettaa nykyisen työskentelypaikan määritettyyn sijaintiin
  • get-content: Noutaa tiedoston sisällön
  • get-item: Haetaan tiedostot ja kansiot
  • copy-item: Kopioi kohteen paikasta toiseen
  • Poista esine: Poistaa tiedostot ja kansiot
  • get-prosessi: Hankkii prosessit, jotka ovat käynnissä paikallisella tai etätietokoneella
  • get-palvelu: Palvelut käynnistetään paikallisella tai etätietokoneella
  • invoke-webrequest: Haetaan sisältöä Internet-verkkosivulta

Jos haluat nähdä, kuinka tietty cmdlet toimii, käytä Hae apua, kuten

get-help copy-item -full

Sen ohjeiden perusteella voit helposti selvittää, mitä cmdlet-kirjain haluaa. Esimerkiksi, jos haluat kopioida kaikki tiedostot ja kansiot Asiakirjat että c: \ lämpötila, käytät:

copy-item c: \ users \ [username] \ documents \ * c: \ temp

Kun kirjoitat komentoa, näet muutaman hienon kosketuksen PowerShell-ympäristöön. Esimerkiksi, jos kirjoitat copy-i ja paina sarkainnäppäintä, PowerShell täyttää Kopioi-kohde ja välilyönti. Jos kirjoitat cmdletin väärin ja PowerShell ei pysty selvittämään sitä, saat erittäin perusteellisen kuvauksen siitä, mikä meni pieleen.

Kokeile tätä cmdlet-tiedostoa. (Se voi yrittää saada sinut asentamaan ohjelman lukemaan "About" -ruutu. Jos näin on, ohita se.)

invoke-webrequest askwoody.com

Saat ytimekkään luettelon verkkosivun sisältöilmoituksista, otsikoista, kuvista, linkeistä ja muusta. Katso miten se toimii? Ilmoitus Hae apua listalle invoke-webrequest että invoke-webrequest cmdlet "palauttaa lomakekokoelmat, linkit, kuvat ja muut merkittävät HTML-elementit" - juuri sen, mitä sinun pitäisi nähdä ruudulla.

Jotkin cmdlet-komennot auttavat sinua hallitsemaan itse PowerShelliä tai grokki:

  • get-komento: Luettelee kaikki saatavilla olevat cmdletit (se on pitkä luettelo!)
  • get-verbi: Luettelee kaikki käytettävissä olevat verbit (cmdletien vasen puolisko)
  • selkeä isäntä: Tyhjentää isäntäohjelman näytön

Eri parametrit (muista, Hae apua) avulla voit pilata komentoja ja rajata vaihtoehtoja, joista voi olla hyötyä sinulle. Esimerkiksi, jos haluat nähdä luettelon kaikista Windows-palveluiden kanssa toimivista cmdlet-moduuleista, kokeile tätä:

get-command * -palvelu

Siinä luetellaan kaikki verbit, jotka ovat käytettävissä palvelu substantiivina. Tässä on tulos:

Hanki palvelu

Uusi palvelu

Käynnistä palvelu uudelleen

Jatka palvelua

Set-Service

Käynnistä palvelu

Stop-palvelu

Keskeytä palvelu

Voit yhdistää nämä cmdletit muiden cmdlet-kirjaimien kanssa kaivamaan alas melkein mihin tahansa PowerShell-osaan. Siellä putket tulevat kuvaan.

Vaihe 6: Tuo putket sisään

Jos olet joskus käyttänyt Windowsin komentoriviä tai löytänyt eräajotiedostoa, tiedät uudelleenohjauksesta ja putkista. Yksinkertaisesti sanottuna molemmat uudelleenohjaukset (> merkki) ja putket ( | merkki) ottaa toiminnan tulos ja kiinnitä se jonnekin muualle. Voit esimerkiksi ohjata uudelleen a: n tuloksen ohj komento tekstitiedostoon tai "putki" a: n tuloksesta ping komento a löytö, suodattaa mielenkiintoisia tuloksia, kuten:

dir> temp.txt

ping askwoody.com | etsi paketit> temp2.txt

Yllä olevassa toisessa komennossa löytö komento etsii merkkijonoa paketteja askwoody.com-sovelluksen putkilähdössä ping ja kiinnittää kaikki vastaavat rivit tiedostoon nimeltä temp2.txt.

Ehkä yllättävää kyllä, ensimmäinen näistä komennoista toimii hyvin PowerShellissä. Toisen komennon suorittamiseksi haluat jotain tällaista:

ping askwoody.com | valitse merkkijonopaketit | out-tiedosto temp2.txt

Uudelleenohjauksen ja putkien käyttäminen laajentaa huomattavasti Windowsin komentorivin ominaisuuksia: Sen sijaan, että vierität loputtomasti näyttöä alaspäin etsimällä esimerkiksi tekstimerkkijonoa, voit koota putkitetun Windows-komennon, joka tekee tarkastuksen puolestasi.

PowerShellillä on putkisto-ominaisuus, mutta se ei rajoitu tekstiin. Sen sijaan PowerShell antaa sinun siirtää koko objektin cmdlet-tiedostosta toiseen, jossa "objekti" on yhdistelmä tietoja (joita kutsutaan ominaisuuksiksi) ja toiminnoissa (menetelmiä), joita voidaan käyttää tiedoissa.

Vaikea osa on kuitenkin esineiden kohdistus. Yhden cmdlet-muistin toimittaman objektin on vastattava vastaanottavan cmdletin hyväksymiä esineitä. Teksti on hyvin yksinkertainen objekti, joten jos työskentelet tekstin kanssa, kohteiden järjestäminen on helppoa. Muut esineet eivät ole niin alkeellisia.

Kuinka selvittää se? Tervetuloa get-jäsen cmdlet. Jos haluat tietää minkä tyyppisen objektin cmdlet-tiedosto tuottaa, vie se läpi get-jäsen. Jos esimerkiksi yrität selvittää tietokoneellasi käynnissä olevia prosesseja, ja olet kaventanut vaihtoehtoja get-prosessi cmdlet, täältä saat selville, mitä get-prosessi cmdlet tuottaa:

get-prosessi | get-jäsen

Komennon suorittaminen tuottaa pitkän luettelon ominaisuuksista ja menetelmistä get-prosessi, mutta luettelon alusta näet kyseisen objektityypin get-prosessi luo:

TypeName: System.Diagnostics.Process

Alla oleva kuvakaappaus kertoo myös sen get-prosessi on ominaisuuksia kutsutaan Kahvat, Nimi, NPM, PM, SI, VMja WS.

Jos haluat manipuloida get-prosessi jotta voit työskennellä sen kanssa (toisin kuin se näyttää pitkän luettelon aktiivisista prosesseista näytöllä), sinun on löydettävä toinen cmdlet, joka toimii Järjestelmä, diagnostiikka, prosessi syötteenä. Löydät haluamasi cmdlet-numeron yksinkertaisesti… odota sitä ... PowerShell:

get-command -Parametertype System.Diagnostics.Process

Se tuottaa luettelon kaikista käsiteltävistä cmdlet-tiedostoista Järjestelmä, diagnostiikka, prosessi.

Jotkut cmdletit ovat tunnettuja siitä, että ne ottavat melkein kaikenlaisia ​​syötteitä. Chief heidän joukossaan: missä-esine. Ehkä hämmentävästi, missä-esine silmukkaa jokaisen putkistoon lähetetyn kohteen läpi yksitellen ja käyttää mitä tahansa valitsemiasi valintaperusteita. Siinä on erityinen merkki $_. jonka avulla voit siirtyä putken jokaisen kohteen läpi yksi kerrallaan.

Oletetaan, että haluat luoda luettelon kaikista koneellasi käynnissä olevista prosesseista,svchost”- PowerShell-puheessa haluat sovittaa yhteen Nimi Omaisuuttasvchost. Kokeile tätä PowerShell-komentoa:

get-prosessi | where-object {$ _. Nimi -eq "svchost"}

missä-esine cmdlet tarkastelee kutakin Järjestelmä, diagnostiikka, prosessi , vertaa .Nimi kyseisen tuotteen "svchost”; jos kohde täsmää, se sylkee putken pään ja kirjoitetaan näyttöön. Katso kuvakaappaus.