Geek School: Lær hvordan du automatiserer Windows med PowerShell

Innholdsfortegnelse:

Geek School: Lær hvordan du automatiserer Windows med PowerShell
Geek School: Lær hvordan du automatiserer Windows med PowerShell

Video: Geek School: Lær hvordan du automatiserer Windows med PowerShell

Video: Geek School: Lær hvordan du automatiserer Windows med PowerShell
Video: Minecraft Live 2020: Full Show - YouTube 2024, April
Anonim
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ø.
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 en delt visning slik at du kan raskt 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.
Som du kan se ISE sporten en delt visning slik at du kan raskt 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.
Image
Image
Alternativt kan du kommunisere med PowerShell ved hjelp av PowerShell Console, som jeg vil bruke for det meste 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.
Alternativt kan du kommunisere med PowerShell ved hjelp av PowerShell Console, som jeg vil bruke for det meste 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.
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.
Image
Image
Image
Image

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

Image
Image
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:
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:

Get-Help –Name Update-Help

Du lurer nok på hvordan du tolker all den teksten uansett, jeg mener hvorfor er det to mye 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 du ville bare ta tak i de nyeste filene fra Microsoft.
Du lurer nok på hvordan du tolker all den teksten uansett, jeg mener hvorfor er det to mye 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 du ville bare ta tak i de nyeste filene fra Microsoft.

For å svare på det andre spørsmålet, er det en viss syntaks som hjelper filene, og her er det:

  • Firkantede parenteser 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 som parameteren forventer.

Mens du bør lære å lese hjelpefilsyntaxen, 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 om hver 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:
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*

Sikker på at all denne informasjonen kanskje ikke er nyttig med flaggermusen, men stol på meg, ta deg tid og lær hvordan du bruker hjelpesystemet. Det kommer til nytte hele tiden, selv til avanserte scripters som har gjort dette i årevis.
Sikker på at all denne informasjonen kanskje ikke er nyttig med flaggermusen, men stol på meg, ta deg tid og lær hvordan du bruker hjelpesystemet. Det kommer til nytte hele tiden, selv til avanserte scripters som har gjort dette i årevis.

Sikkerhet

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:

unme.ps1

Eller hvis du allerede er på roten til C-stasjonen, kan du bruke følgende:

unme.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 utførelsesretningslinjer:

  • 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 ikke-signerte 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 inn:

Get-ExecutionPolicy

For dette kurset og de fleste andre omstendigheter er RemoteSigned Policy det beste, så fortsett og endre retningslinjene dine ved å bruke følgende.
For dette kurset og de fleste andre omstendigheter er RemoteSigned Policy det beste, så fortsett og endre retningslinjene dine ved å bruke følgende.

Merk: Dette må gjøres fra en forhøyet PowerShell-konsoll.

Set-ExecutionPolicy RemoteSigned

Det er alt for denne gangen folk, ser deg i morgen for litt mer PowerShell-moro.
Det er alt for denne gangen folk, ser deg i morgen for litt mer PowerShell-moro.

Ansvarsfraskrivelse: Den riktige 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 noen spørsmål, kan du tweet meg @ taybgibb, eller bare gi en kommentar.

Anbefalt: