Tässä Geek School -versiossa autamme sinua ymmärtämään tehokkaan PowerShell-komentosarjakielen, joka on sisäänrakennettu suoraan Windowsiin ja jonka tunteminen on erittäin hyödyllistä IT-ympäristössä.
Vaikka tämä sarja ei ole rakennettu kokeen ympärille, PowerShellin oppiminen on yksi tärkeimmistä asioista, joita voit tehdä verkon järjestelmänvalvojana, joten jos haluat oppia yhden asian auttamaan IT-uraa, se on se. Lisäksi se on hauskaa.
Johdanto
PowerShell on tehokkain automaatiotyökalu, jota Microsoftilla on tarjottavanaan, ja sen molemmat a kuori ja a komentosarjakieli .
Huomaa, että tämä sarja perustuu PowerShell 3: een, joka toimitetaan Windows 8: n ja Server 2012: n kanssa. Jos sinulla on Windows 7, lataa PowerShell 3 -päivitys ennen kuin jatkat.
Tapaa konsoli ja ISE
On olemassa kaksi tapaa olla vuorovaikutuksessa PowerShellin kanssa alusta alkaen, konsoli ja integroitu komentosarjaympäristö - tunnetaan myös nimellä ISE. ISE on parantunut huomattavasti PowerShell 2: n mukana toimitetusta hirvittävästä versiosta, ja se voidaan avata painamalla Win + R-näppäimistöyhdistelmää esittämään juoksuruutu, kirjoittamalla PowerShell_ise ja painamalla Enter.
Kuten näette, ISE harjoittaa jakautunutta näkymää, jotta voit skriptata nopeasti ja silti nähdä tuloksen ISE: n alaosassa. ISE: n alaosaa, johon komentosarjan tulokset tulostetaan, voidaan käyttää myös REPL-kehotteena - aivan kuten komentokehote. V3 ISE lisäsi vihdoin tuen intellisense-ohjelmalle sekä komentosarjassa että interaktiivisessa konsolissa.
Vaihtoehtoisesti voit olla vuorovaikutuksessa PowerShellin kanssa PowerShell-konsolilla, jota aion käyttää suurimmaksi osaksi tätä sarjaa. PowerShell-konsoli käyttäytyy aivan kuten komentokehote - syötät vain komennot ja se siroaa tulokset. Voit avata Windows PowerShell -konsolin painamalla Win + R-näppäimistöyhdistelmää avataksesi ajoruudun ja kirjoittamalla powershell ja painamalla sitten enter.
Tällaiset REPL-kehotteet ovat mahtavia välitöntä tyydytystä varten: annat komennon ja saat tuloksia. Vaikka konsoli ei tarjoa älykkäitä tietoja, se tarjoaa niin sanotun välilehden täydennyksen, joka toimii suunnilleen samalla tavalla - aloita kirjoittamalla komento ja selaa mahdollisia otteluita painamalla sarkainta.
Ohjejärjestelmän käyttäminen
Aiemmissa PowerShell-versioissa ohjetiedostot olivat mukana, kun asennit Windowsin. Tämä oli pääosin hyvä ratkaisu, mutta jätti meille merkittävän ongelman. Kun PowerShell-ohjitiimin oli lopetettava ohjetiedostojen käsittely, PowerShell-kehittäjät olivat edelleen kiireisiä koodaamalla ja tekemään muutoksia. Tämä tarkoitti sitä, että kun PowerShell toimitettiin, ohjetiedostot olivat virheellisiä, koska ne eivät sisältäneet koodiin tehtyjä uudempia muutoksia. Tämän ongelman ratkaisemiseksi PowerShell 3: n mukana ei tule ohjetiedostoja, ja se sisältää päivitettävän ohjejärjestelmän. Tämä tarkoittaa, että ennen kuin teet mitään, haluat ladata uusimmat ohjetiedostot. Voit tehdä sen avaamalla PowerShell-konsolin ja suorittamalla:
Päivitys-ohje
Onnittelut ensimmäisen PowerShell-komennon suorittamisesta! Totuus on, että Update-Help -komennolla on paljon enemmän vaihtoehtoja kuin vain sen suorittaminen, ja nähdäksesi ne haluamme tarkastella komennon apua. Jos haluat tarkastella komennon ohjetta, välitä yksinkertaisesti komennon nimi Get-Help -komennon Name-parametriin, esimerkiksi:
Get-Help –Nimi-päivitys-ohje
Mietit luultavasti, kuinka tulkita kaikki tuo teksti joka tapauksessa, tarkoitan, miksi syntaksiosassa on kaksi paljon tietoa ja miksi on niin paljon sulkeita kaikkialla? Ensinnäkin ensin: Syynä siihen, että syntaksiosassa on kaksi tietolohkoa, johtuu siitä, että ne edustavat erilaisia tapoja suorittaa komento. Näitä kutsutaan teknisesti parametrisarjoiksi, ja voit käyttää vain yhtä kerrallaan (et voi sekoittaa parametreja eri joukkoista). Yllä olevasta kuvakaappauksesta näet, että ylimmässä parametrisarjassa on SourcePath-parametri, kun taas alaosassa ei ole. Syynä on, että käytät ylintä parametrisarjaa (joka sisältää SourcePathin), jos päivität ohjetiedostot toisesta verkon koneesta, joka oli jo ladannut ne, kun taas sinun ei tarvitse määrittää lähdepolkua, jos halusin vain napata uusimmat tiedostot Microsoftilta.
Toiseen kysymykseen vastaamiseksi on olemassa tietty syntaksi, joka auttaa tiedostoja seuraamaan, ja tässä se on:
- Parametrien nimen ja tyypin ympärillä olevat hakasulkeet tarkoittavat, että se on valinnainen parametri ja komento toimii hienosti ilman sitä.
- Parametrien nimen ympärillä olevat hakasulkeet tarkoittavat, että parametrit ovat sijaintiparametreja.
- Kulmasulkeissa parametrin oikealla puolella oleva asia kertoo tietotyypin, jonka parametri odottaa.
Vaikka sinun pitäisi oppia lukemaan ohjetiedoston syntaksia, jos olet koskaan epävarma tietystä parametrista, liitä vain - Täytä get help -komennon loppuun ja vieritä alas parametrit -osioon, jossa se kertoo sinulle hieman jokaisesta parametri.
Get-Help –Nimi Päivitys-Ohje –Täysi
Viimeinen asia, joka sinun on tiedettävä ohjejärjestelmästä, on kuinka voit käyttää sitä komentojen löytämiseen, mikä on todella helppoa. PowerShell hyväksyy jokerimerkit melkein missä tahansa, joten niiden käyttäminen yhdessä Get-Help -komennon kanssa auttaa sinua helposti löytämään komentoja. Etsin esimerkiksi komentoja, jotka käsittelevät Windows-palveluita:
Get-Help –Nimi * -palvelu *
Toki kaikki nämä tiedot eivät välttämättä ole käteviä, mutta luota minuun, ota aikaa ja opi käyttämään ohjejärjestelmää. Se on kätevä koko ajan, jopa edistyneille käsikirjoittajille, jotka ovat tehneet tätä vuosia.
Turvallisuus
Tämä ei olisi oikea esittely mainitsematta turvallisuutta. Suurin huolenaihe PowerShell-tiimille on, että PowerShellistä tulee uusin ja suurin hyökkäyspiste skriptilapsille. He ovat ottaneet käyttöön muutaman turvatoimenpiteen varmistaakseen, että näin ei tapahdu, joten katsotaanpa niitä.
Suojauksen perusmuoto tulee siitä, että PS1-tiedostotunnistetta (laajennusta, jota käytetään PowerShell-komentosarjan merkitsemiseen) ei ole rekisteröity PowerShell-isäntään, vaan se on todella rekisteröity Notepadiin. Tämä tarkoittaa, että jos kaksoisnapsautat tiedostoa, se avautuu muistikirjalla sen sijaan, että suoritettaisiin.
Toiseksi, et voi suorittaa komentosarjoja komentotulkista kirjoittamalla vain komentosarjan nimi, sinun on määritettävä koko komentosarjan polku. Joten jos haluat suorittaa komentosarjan C-asemallasi, sinun on kirjoitettava:
C:\runme.ps1
Tai jos olet jo C-aseman juuressa, voit käyttää seuraavaa:
. \ ρυνμε.ψ1
Lopuksi, PowerShellillä on jotain nimeltä Execution Policies, joka estää sinua suorittamasta vanhaa komentosarjaa. Itse asiassa et voi oletusarvoisesti suorittaa komentosarjoja, ja sinun on muutettava suorituskäytäntöä, jos haluat sallia niiden suorittamisen. On olemassa 4 merkittävää toteutuspolitiikkaa:
- Rajoitettu : Tämä on PowerShellin oletusmääritys. Tämä asetus tarkoittaa, että mikään komentosarja ei voi toimia sen allekirjoituksesta riippumatta. Ainoa asia, joka voidaan suorittaa PowerShellissä tällä asetuksella, on yksittäinen komento.
- All Signed: Tämä asetus sallii komentosarjojen suorittamisen PowerShellissä. Komentosarjaan on liitettävä luotettavan julkaisijan digitaalinen allekirjoitus. Ilmoitus tulee näkyviin, ennen kuin luot luotettujen julkaisijoiden komentosarjat.
- RemoteSigned : Tämä asetus sallii komentosarjojen suorittamisen, mutta edellyttää, että Internetistä ladatuille komentosarjoille ja määritystiedostoille on liitetty luotettavan julkaisijan digitaalinen allekirjoitus. Paikalliselta tietokoneelta suoritettuja komentosarjoja ei tarvitse allekirjoittaa. Ennen komentosarjan suorittamista ei ole kehotteita.
- Rajoittamaton : Tämä sallii allekirjoittamattomien komentosarjojen suorittamisen, mukaan lukien kaikki Internetistä ladatut skriptit ja määritystiedostot. Tämä sisältää tiedostoja Outlookista ja Messengeristä. Riskinä tässä ovat komentosarjojen käyttäminen ilman allekirjoitusta tai suojausta. Olemme ilmoittaneet, ettet koskaan meille tätä asetusta.
Jos haluat nähdä, mihin nykyinen suorituskäytäntö on asetettu, avaa PowerShell-konsoli ja kirjoita:
Get-ExecutionPolicy
Tälle kurssille ja useimmissa muissa olosuhteissa RemoteSigned Policy on paras, joten muuta ja muuta käytäntöäsi seuraavalla tavalla.
Huomaa: Tämä on tehtävä korotetusta PowerShell-konsolista.
Set-ExecutionPolicy RemoteSigned
Se on kaikki tällä kertaa ihmiset, nähdään huomenna lisää PowerShell-hauskaa.
Vastuuvapauslauseke: Oikea termi PowerShell-komennolle on cmdlet, ja tästä lähtien käytämme tätä oikeaa terminologiaa. Tuntui sopivammalta kutsua heitä käskyiksi tälle johdannolle.
Jos sinulla on kysyttävää, voit twiitata minua @taybgibb tai jätä vain kommentti.