15Jul
I denne utgaven av Geek School vil vi hjelpe deg med å forstå det kraftige PowerShell skriptspråk som er bygget rett inn i Windows, og er ekstremt nyttig å vite i et IT-miljø.
Mens denne serien ikke er strukturert rundt en eksamen, er læring PowerShell en av de viktigste tingene du kan gjøre som nettverksadministrator, så hvis det er en ting du vil lære å hjelpe din IT-karriere, er dette det. I tillegg er det mye moro.
Introduksjon
PowerShell er det kraftigste automatiseringsverktøyet som Microsoft har å tilby, og det er både et skall og et skriptspråk.
Vær oppmerksom på at denne serien er basert på PowerShell 3, som leveres med Windows 8 og Server 2012. Hvis du kjører Windows 7, laster du ned PowerShell 3-oppdateringen før du fortsetter.
Møt konsollen og ISE
Det er to måter å interagere med PowerShell ut av boksen, konsollen og det integrerte skriptmiljøet - også kjent som ISE.ISE har vesentlig forbedret seg fra den heslige versjonen som ble levert med PowerShell 2, og kan åpnes ved å trykke på Win + R-tastaturkombinasjonen for å hente en kjøreboks, og deretter skrive powershell_ise og trykke enter.
Som du kan se ISE-sporten, er en delt visning slik at du raskt kan skript mens du fortsatt kan se resultatet i den nedre halvdelen av ISE.Den nederste halvdelen av ISE, der resultatene av skriptet ditt skrives ut, kan også brukes som en REPL-ledetekst - omtrent som kommandoprompt. V3 ISE til slutt lagt til støtte for intellisense i både manuskriptruten og den interaktive konsollen.
Alternativt kan du kommunisere med PowerShell ved hjelp av PowerShell Console, som jeg vil bruke for de fleste av denne serien. PowerShell Console oppfører seg som kommandoprompten - du bare skriver inn kommandoer, og det spytter ut resultatene. For å åpne Windows PowerShell Console, trykk igjen på Win + R-tastaturkombinasjonen for å åpne en kjøreboks og skriv powerhell og trykk deretter enter.
REPL prompts som dette er fantastisk for øyeblikkelig tilfredstillelse: du skriver inn en kommando og du får resultater. Mens konsollen ikke tilbyr intellisense, tilbyr den noe som kalles kategorien ferdigstillelse som fungerer mye det samme - bare start å skrive en kommando og trykk på kategorien for å bla gjennom mulige kamper.
Bruke hjelpesystemet
I tidligere versjoner av PowerShell ble hjelpefiler inkludert når du installerte Windows. Dette var en god løsning for det meste, men ga oss et betydelig problem. Når PowerShells helpteam måtte slutte å jobbe med hjelpefilene, var PowerShell-utviklerne fremdeles opptatt av koding og endringer. Dette betydde at når PowerShell ble sendt, var hjelpefilene feil fordi de ikke inneholdt de nyere endringene som ble gjort til koden. For å løse dette problemet, kommer PowerShell 3 uten hjelpefiler ut av boksen og inneholder et oppdaterbart hjelpesystem. Dette betyr at før du gjør noe du vil laste ned de nyeste hjelpefilene. Du kan gjøre det ved å åpne en PowerShell Console og kjøre:
Update-Help
Gratulerer med å kjøre din første PowerShell-kommando! Sannheten er at oppdateringshjelp-kommandoen har mye flere muligheter enn bare å kjøre den, og for å se dem vil vi se hjelpen til kommandoen. For å se hjelpen til en kommando, sender du bare navnet på kommandoen du vil ha hjelp til til parameternavnet i kommandoen Get-Help, for eksempel:
Hent-Hjelp-Navn Oppdateringshjelp
Du lurer nok på hvordan du skal tolkeall den teksten uansett, jeg mener hvorfor er det to masse informasjon under syntaksdelen og hvorfor er det så mange braketter over alt? Første ting først: grunnen til at det er to blokker med informasjon under syntakseksjonen, er fordi de representerer forskjellige måter å kjøre kommandoen på.Disse er teknisk kalt parameter sett og du kan bare bruke en om gangen( du kan ikke blande parametere fra forskjellige sett).I det ovennevnte skjermbildet kan du se at toppparametersettet har en SourcePath-parameter mens bunnen ikke gjør det.Årsaken er at du vil bruke toppparametersettet( den som inneholder SourcePath) hvis du oppdaterte hjelpefilene fra en annen maskin på nettverket ditt som allerede hadde lastet ned dem, mens du ikke trenger å spesifisere en kildebane hvis duville bare ta tak i de nyeste filene fra Microsoft.
For å svare på det andre spørsmålet, er det en viss syntaks som hjelper filer følger og her er det:
- Firkant parentes rundt et parameternavn og dets type betyr at det er en valgfri parameter, og kommandoen vil fungere fint uten det.
- Firkantede parenteser rundt parameternavn betyr at parametrene er posisjonsparameter.
- Tingen til høyre for en parameter i de vinklede parentesene forteller deg datatypen parameteren forventer.
Mens du bør lære å lese hjelpefilens syntaks, hvis du noen gang er usikker på en bestemt parameter, legger du bare til -Full til slutten av din kommando for hjelp og bla ned til parameter-delen, der den vil fortelle deg litt mer omhver parameter.
Get-Help -Name Update-Help-Full
Det siste du trenger å vite om hjelpesystemet er hvordan du kan bruke den til å oppdage kommandoer, noe som egentlig er veldig enkelt. Du ser, PowerShell aksepterer jokertegn nesten hvor som helst, så bruk dem sammen med kommandoen Get-Help lar deg enkelt oppdage kommandoer. For eksempel ser jeg etter kommandoer som omhandler Windows Services:
Get-Help-Name * service *
Visst, all denne informasjonen kan ikke være nyttig av flaggermuset, men stol på meg, ta deg tid og lær hvordan du brukerhjelpesystemet. Det kommer til nytte hele tiden, selv til avanserte scripters som har gjort dette i årevis.
Security
Dette ville ikke være en riktig introduksjon uten å nevne sikkerhet. Den største bekymringen for PowerShell-teamet er at PowerShell blir det nyeste og største angrepspunktet for skriptkiddier. De har satt noen få sikkerhetstiltak på plass for å sikre at dette ikke skjer, så la oss ta en titt på dem.
Den mest grunnleggende beskyttelsesformen kommer fra at PS1-filtypen( utvidelsen som brukes til å betegne et PowerShell-skript) ikke er registrert hos en PowerShell-vert, det er faktisk registrert med Notisblokk. Det betyr at hvis du dobbeltklikker på en fil, vil den åpne med notisblokk i stedet for å kjøre.
For det andre kan du ikke kjøre skript fra skallet ved å bare skrive skriptets navn, du må angi hele banen til skriptet. Så hvis du ønsker å kjøre et skript på C-stasjonen din, må du skrive:
C: \ runme.ps1
Eller hvis du allerede er på roten til C-stasjonen, kan du bruke følgende:
. \ Runme.ps1
Endelig har PowerShell noe som heter Execution Policies, som stopper deg fra å bare kjøre et gammelt skript. Faktisk kan du som standard ikke kjøre noen skript og må endre din utførelsespolicy hvis du vil ha lov til å kjøre dem. Det er 4 bemerkelsesverdige gjennomføringsregler:
- Begrenset : Dette er standardkonfigurasjonen i PowerShell. Denne innstillingen betyr at ingen skript kan kjøre, uavhengig av signaturen. Det eneste som kan kjøres i PowerShell med denne innstillingen er en individuell kommando.
- AllSigned: Denne innstillingen tillater at skript kjøres i PowerShell. Skriptet må ha en tilhørende digital signatur fra en klarert utgiver. Det vil være en ledig før du kjører skriptene fra klarerte utgivere.
- RemoteSigned : Denne innstillingen tillater at skript kjøres, men krever at skript og konfigurasjonsfiler som lastes ned fra Internett, har en tilhørende digital signatur fra en klarert utgiver. Skript som kjører fra den lokale datamaskinen trenger ikke å bli signert. Det er ingen anrop før du kjører skriptet.
- Ubegrenset : Dette tillater at usignerte skript kjøres, inkludert alle skript og konfigurasjonsfiler som er lastet ned fra Internett. Dette vil inkludere filer fra Outlook og Messenger. Risikoen her kjører skript uten signatur eller sikkerhet. Vi recommenced at du aldri oss denne innstillingen.
Hvis du vil se hva din nåværende utførelsespolicy er satt til, åpner du en PowerShell Console og skriver:
Get-ExecutionPolicy
For dette kurset og de fleste andre omstendigheter er RemoteSigned Policy det beste, så fortsett og endre retningslinjene dine ved hjelp av følgende.
Merk: Dette må gjøres fra en forhøyet PowerShell Console.
Set-ExecutionPolicy RemoteSigned
Det er alt for denne gangen folk, ser deg i morgen for litt mer PowerShell-moro.
Ansvarsfraskrivelse: Den rette termen for en PowerShell-kommando er en cmdlet, og fra nå av vil vi bruke denne riktige terminologien. Det føltes bare mer hensiktsmessig å kalle dem kommandoer for denne introduksjonen.
Hvis du har spørsmål, kan du tweet meg @taybgibb, eller bare gi en kommentar.