Geek-koulu Opi automatisoimaan Windows PowerShellillä
Tässä Geek School -kirjan julkaisussa autamme sinua ymmärtämään tehokkaan PowerShell-komentosarjakielen, joka on rakennettu suoraan Windowsiin, ja se on erittäin hyödyllistä tietää IT-ympäristössä.
Vaikka tämä sarja ei ole jäsennelty tentin ympärille, oppiminen PowerShell on yksi tärkeimmistä asioista, joita voit tehdä verkonvalvojana, joten jos on yksi asia, jonka haluat oppia auttamaan IT-uraa, tämä on se. Lisäksi se on hauskaa.
esittely
PowerShell on tehokkain automaatiotyökalu, jota Microsoft tarjoaa, sekä sen sekä kuoren että skriptikielen.
Huomaa, että tämä sarja perustuu PowerShell 3: een, joka sisältää Windows 8: n ja Server 2012: n. Jos käytät Windows 7: tä, lataa PowerShell 3 -päivitys ennen kuin jatkat.
Tapaa konsoli ja ISE
On olemassa kaksi tapaa vuorovaikutuksessa PowerShellin kanssa, konsoli ja integroitu komentosarjaympäristö, joka tunnetaan myös nimellä ISE. ISE on parantanut huomattavasti PowerShell 2: n mukana toimitettua hirvittävää versiota, ja se voidaan avata painamalla Win + R -näppäimistöyhdistelmää, kun haluat tuoda esiin run boxin, kirjoittamalla sitten powershell_ise ja painamalla enter-näppäintä..
Kuten näette ISE: n urheilun jaetun näkymän, niin että voit nopeasti skriptata samalla, kun pystyt näkemään tuloksen ISE: n alaosassa. ISE: n alaosaa, jossa skriptisi tulokset tulostetaan, voidaan käyttää myös REPL-kehotteena - aivan kuten komentokehotteella. V3 ISE lisäsi lopulta tuen intellisenseen sekä skripti-ikkunassa että vuorovaikutteisessa konsolissa.
Vaihtoehtoisesti voit olla vuorovaikutuksessa PowerShellin kanssa käyttäen PowerShell-konsolia, jota käytän useimmissa tämän sarjan sarjoissa. PowerShell-konsoli käyttäytyy aivan kuten komentorivillä - syötät vain komennot ja se sulkee tulokset. Voit avata Windows PowerShell -konsolin uudelleen painamalla Win + R -näppäimistöyhdistelmää avataksesi ajuruudun ja kirjoittamalla powershell ja painamalla Enter-näppäintä..
Tällaiset REPL-kehotukset ovat mahtavia välittömään tyydytykseen: annat komennon ja saat tuloksia. Vaikka konsoli ei tarjoa intellisenseä, se tarjoaa jotain välilehden valmistusta, joka toimii paljon samalla tavalla - aloita vain komennon kirjoittaminen ja paina välilehteä, kun haluat selata mahdollisia otteluita.
Ohjejärjestelmän käyttäminen
PowerShellin aiemmissa versioissa ohjetiedostot sisällytettiin Windows-asennuksen yhteydessä. Tämä oli hyvä ratkaisu suurelta osin, mutta jätti meille merkittävän ongelman. Kun PowerShell-avustusjoukkue joutui lopettamaan ohjetiedostojen käytön, PowerShell-kehittäjät olivat edelleen kiireisiä koodaamalla ja tekemällä muutoksia. Tämä tarkoitti sitä, että kun PowerShell toimitettiin, ohjetiedostot olivat virheellisiä, koska ne eivät sisältäneet uudempia, koodiin tehtyjä muutoksia. Tämän ongelman ratkaisemiseksi PowerShell 3: ssa ei ole apuvälineitä, jotka sisältävät päivityksen helpottavan järjestelmän. Tämä tarkoittaa, että ennen kuin teet mitään, haluat ladata uusimmat ohjetiedostot. Voit tehdä sen avaamalla PowerShell-konsolin ja toimimalla:
Update-ohje
Onnittelut ensimmäisen PowerShell-komennon käyttämisestä! Totuus on, että Update-Help -komennolla on paljon enemmän vaihtoehtoja kuin pelkkä sen suorittaminen, ja nähdäksemme ne haluamme tarkastella komentoa. Jos haluat nähdä komennon ohjeen, välität vain sen komennon nimen, jonka haluat avata, Get-Help-komennon Nimi-parametriin, esimerkiksi:
Get-Help -Nimi-päivitys-Ohje
Olet luultavasti ihmetellyt, miten tulkita kaiken tämän tekstin, tarkoitan, miksi syntaksi-osion alla on kaksi paljon tietoa ja miksi siellä on niin paljon sulkeja kaikkialla? Ensinnäkin ensimmäiset asiat: syy on, että syntaksi-osan alla on kaksi informaatiolohkoa, koska ne edustavat eri tapoja suorittaa komento. Näitä kutsutaan teknisesti parametriryhmiksi ja voit käyttää vain yhtä kerrallaan (et voi yhdistää parametreja eri sarjoista). Yllä olevassa kuvassa näet, että ylemmässä parametrisarjassa on SourcePath-parametri, kun pohja ei ole. Syynä on se, että käytät ylimmän parametrisarjan (joka sisältää SourcePathin), jos päivitit ohjetiedostoja toisesta koneesta, joka oli jo ladannut ne, vaikka et tarvitse määrittää lähdepolun, jos halusin vain tarttua uusimpiin Microsoftin tiedostoihin.
Jos haluat vastata toiseen kysymykseen, on olemassa tietty syntaksi, joka auttaa tiedostoja seuraamaan ja tässä se on:
- Parametrin nimen ja sen tyypin ympärillä olevat neliösulakkeet merkitsevät sitä, että se on valinnainen parametri ja komento toimii hyvin ilman sitä.
- Parametrin nimen ympärillä olevat neliösulakkeet merkitsevät, että parametrit ovat sijainnin parametri.
- Parametrien oikealla puolella kulmissa olevissa suluissa kerrotaan tietotyypistä, jota parametri odottaa.
Vaikka sinun pitäisi oppia lukemaan ohjetiedoston syntaksia, jos olet koskaan epävarma tietystä parametrista, vain lisää -Täytä ohjeen komento-komennon loppuun ja selaa parametrien osioon, jossa se kertoo sinulle hieman lisää jokaisesta parametri.
Get-Help -Nimi Päivitä-Ohje - Täydellinen
Viimeinen asia, josta sinun tarvitsee tietää ohjojärjestelmästä, on se, miten voit käyttää sitä etsimään komentoja, mikä on todella helppoa. Näet, että PowerShell hyväksyy metakortit melkein missä tahansa, joten niiden käyttö yhdessä Get-Help -komennon kanssa auttaa sinua löytämään helposti komentoja. Etsin esimerkiksi komentoja, jotka käsittelevät Windows-palveluita:
Get-Help -Nimi * -palvelu *
Toki kaikki nämä tiedot eivät ehkä ole käteviä, mutta luota minuun, vie aikaa ja opi käyttämään ohjojärjestelmää. Se on kätevä koko ajan, jopa kehittyneille käsikirjoittajille, jotka ovat tehneet tämän jo vuosia.
turvallisuus
Tämä ei olisi oikea käyttöönotto ilman turvallisuutta. PowerShell-tiimin suurin huolenaihe on, että PowerShellistä tulee uusin ja suurin hyökkäyspiste skriptien kiddiesille. He ovat ottaneet käyttöön muutamia turvatoimia, joilla varmistetaan, että tämä ei tapahdu, joten katsokaamme niitä.
Tärkein suojausmuoto tulee siitä, että PS1-tiedostotunniste (PowerShell-skriptiä kuvaava laajennus) ei ole rekisteröity PowerShell-isäntäkoneeseen, joka on todellisuudessa rekisteröity Notepadiin. Tämä tarkoittaa, että jos kaksoisnapsautat tiedostoa, se avautuu notepadilla käynnistyksen sijaan.
Toiseksi, et voi suorittaa komentosarjoja kuoresta kirjoittamalla komentosarjan nimen, sinun on määritettävä koko polku skriptiin. Joten jos haluat suorittaa komentosarjan C-asemassa, sinun pitäisi kirjoittaa:
C: \ runme.ps1
Tai jos olet jo C-aseman juuressa, voit käyttää seuraavaa:
.\ runme.ps1
Lopuksi PowerShellillä on jotain nimitystä Execution Policies, joka estää sinua käyttämästä vanhaa komentosarjaa. Itse asiassa et voi käyttää oletusarvoisesti mitään komentosarjoja ja sinun on muutettava toteutuspolitiikkaa, jos haluat sallia niiden suorittamisen. Käytössä on 4 merkittävää toteutuspolitiikkaa:
- rajoitettu: Tämä on PowerShellin oletusasetus. Tämä asetus tarkoittaa, että mitään komentosarjaa ei voi käyttää sen allekirjoituksesta riippumatta. Ainoa asia, joka voidaan suorittaa PowerShellissa tällä asetuksella, on yksilöllinen komento.
- AllSigned: Tämä asetus sallii komentosarjojen suorittamisen PowerShellissa. Komentosarjassa on oltava siihen liittyvä digitaalinen allekirjoitus luotettavalta julkaisijalta. Ennen kuin käytät komentosarjoja luotetuilta julkaisijoilta, on kehote.
- RemoteSigned: Tämä asetus mahdollistaa skriptien suorittamisen, mutta edellyttää, että Internetistä ladattujen komentosarjojen ja määritystiedostojen digitaalinen allekirjoitus on luotettavalta julkaisijalta. Paikallisesta tietokoneesta tulevia komentosarjoja ei tarvitse allekirjoittaa. Ennen komentosarjan suorittamista ei ole kehotuksia.
- rajoittamaton: Tämä mahdollistaa allekirjoittamattomien komentosarjojen suorittamisen, mukaan lukien kaikki Internetistä ladatut skriptit ja määritystiedostot. Tähän sisältyy tiedostoja Outlookista ja Messengeristä. Tässä riskissä on skriptejä ilman allekirjoitusta tai turvallisuutta. Uudistimme, että et koskaan ole tätä asetusta.
Jos haluat nähdä, mitä nykyinen toteutuspolitiikka on asetettu, avaa PowerShell-konsoli ja kirjoita:
Get-ExecutionPolicy
Tässä kurssissa ja useimmissa muissa olosuhteissa RemoteSigned Policy on paras, joten siirry eteenpäin ja muuta käytäntöäsi seuraavien avulla.
Huomautus: Tämä on tehtävä nostetusta PowerShell-konsolista.
Set-ExecutionPolicy RemoteSigned
Se on kaikki tällä kertaa ihmiset, nähdä sinut huomenna lisää PowerShell hauskaa.
Vastuuvapauslauseke: PowerShell-komennon oikea termi on cmdlet, ja tästä lähtien käytämme tätä oikeaa terminologiaa. Vain tuntui tarkoituksenmukaisemmalta kutsua heitä käskyiksi tätä johdantoa varten.
Jos sinulla on kysyttävää, voit piilottaa minulle @taybgibb tai jättää kommentin.