Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag Intro til PowerShell Stein Meisingseth 15.05.2014 Lærestoffet er utviklet for faget IDRI3005 PowerShell 1. Intro om PowerShell Resymé: Denne leksjonen inneholder en intro om hva PowerShell er og en intro til de mest bruket kommadoer. Innhold 1. INTRO OM SHAREPOINT 2013... 1 2. HISTORIE... 2 2.1. BAKGRUNN... 3 2.2. VERSJONER... 4 PowerShell versjon 1.0... 4 PowerShell versjon 2.0... 4 PowerShell versjon 3.0... 4 PowerShell versjon 4.0... 5 2.3. SYSTEMKRAV... 5 3. KOM I GANG MED POWERSHELL... 6 3.1. 2.1 HVORDAN KJØRE EN KOMMANDO... 6 Starte PowerShell... 6 PowerShell som administrator... 7 2.1.2 Kjøre PowerShell kommandoer... 7 3.2. 2.2 BASIS KUNNSKAPER... 8 Hvordan finne kommandoer... 8 Hvordan bruke hjelp kommandoen... 8 2.2. tab funksjonen... 9 2.2. navigering... 9 Utlisting av informasjon i en mappe... 11 Kopiere og flytte... 11 Opphavsrett: Forfatter
Intro til PowerShell side 2 av 12 2. Historie Her skal vi se litt på hva Windows PowerShell er, hvilke versjoner av PowerShell som finnes og hva som var bakgrunnen for at det kom. Det har vært en svært rask utvikling av versjoner i PowerShell, dette illustreres bra ved at PowerShell versjon 1, som ble utgitt i 2006, bare inneholdt 129 cmdlets, mens PowerShell 3.0 som ble utgitt i 2012 inneholder over 2 000 cmdlets og funksjoner. I tillegg til dette er det nå kommet en versjon 4! som vi skal benytte som utgangspunkt i boken. Hva er PowerShell Windows PowerShell er Microsoft sitt oppgave og konfigurasjons rammeverk. PowerShell består av et kommandolinje-shell og et scriptmiljø som bygger på.net platformen til Microsoft. PowerShell introduserer også en ny type kommando kalt cmdlet. Cmdlets er spesialiserte.net klasser som er bygd opp på formen verb-substantiv. F.eks Get-help, Get- Process osv. I og med at PowerShell baserer seg på.net plattformen til Microsoft, er PowerShell objektorientert. Dette er også viktig å få med seg, spesielt om man er vant med cmd.exe. I cmd.exe er det som står på skjermen bare tekst, mens i PowerShell er det som vises på skjermen objekter, og kan benyttes videre.
Intro til PowerShell side 3 av 12 2.1. Bakgrunn Alle versjoner av Microsoft DOS og Microsoft Windows har hatt et kommandolinje grensesnitt. Vi tenker selvfølgelig på COMMAND.COM og cmd.exe. COMMAND.COM var inkludert i MS-DOS. cmd.exe tok over for COMMAND.COM i OS/2 og Windows NT systemer. Shell-et fungerer ved at du kan kjøre noen få basiskommandoer, shell-et inneholder også et språk for scripting (batch), dette kan brukes for å automatisere oppgaver. Teknologien er i stadig utvikling og ettersom operativsystem og programmer ble mer avanserte, ble administratorer mer og mer avhengig av å automatisere arbeidsoppgaver. Microsoft prøvde først å løse dette ved å slippe ut Windows Script Host (tidligere kjent som Microsoft Script Host), dette ble sluppet ut sammen med Windows 98 i 1998. WSH var et kommandobasert program som kunne håndtere noen få scriptspråk, som Jscript og VBscript, man kan også installere scriptmotorer f.eks PerlScript. WSH tilbyr et miljø der script kan kjøre, det kaller riktig scriptmotor og tilbyr et sett med tjenester og objekter som scriptet kan benytte. Problemet med WSH er at det bare tilbyr scriptegenskaper på lik linje med batchfiler, men med et bredere spekter av støttede tjenester. I 2003 startet Microsoft utviklingen av et shell som var både stabilt og brukervennlig. Dette kom i form av «Monad», første betaversjon av Monad kom ut 17. Juni 2005. Microsoft skiftet navn på Monad til PowerShell 25. April 2006, denne kom ut sammen med Windows Vista den 30. januar 2007. «The traditional approach to composing solutions is difficult and fragile. It uses pipelines to perform prayer-based parsing of text streams. These mechanisms are awkward, inconsistent, and imprecise. Admins spend the majority of their thought process on mechanisms instead of problem solving. Monad takes a different approach providing a precise, powerful script execution engine for creating pipelines of.net objects. Instead of piping unstructured text, we pipe.net objects». -Monad Manifesto Vi ser fra utdraget at selv om vi hadde verktøy for administrering via kommandoer, så var dette ekstremt dårlig. Vi kan si at vi hadde skikkelige verktøy for programmering og dårlige verktøy for administrering via kommandokjøring, ettersom programmeringsspråkene er ganske tunge, er dette noe administratorer er litt tvilsomme til å bruke, eller ikke har tid til å lære seg. Vi kan dermed si at vi mangler en mellomting, som er enkel for administratorer å sette seg inn i og som fungerer tilfredsstillende til administrering via kommandoer.
Intro til PowerShell side 4 av 12 2.2. Versjoner Siden Microsoft lanserte PowerShell er det kommet fire versjoner. De strekker seg fra versjon en til versjon fire. I dette kapittelet skal vi se nærmere på hver versjon, vi skal ta for oss noe av det som er nytt i hver versjon og hvilke operativsystem som er støttet i de forskjellige versjonene. PowerShell versjon 1.0 PowerShell versjon 1.0 ble utgitt i April 2006 og er tilgjengelig for Windows XP Service Pack 2/3, Windows Server 2003 og Windows Vista. Det var også inkludert i Windows Server 2008 som en valgfri tjeneste. PowerShell versjon 1.0 inneholder 129 cmdlets. PowerShell versjon 2.0 PowerShell versjon 2.0 ble utgitt i August 2009 og er integrert i Windows 7 og Windows Server 2008 R2, den er også sluppet til Windows XP Service Pack 3, Windows Server 2003 Service Pack 2 og Windows Vista Service Pack 1. Her er det gjort noen endringer til språket som brukes til scripting, samt mer enn 240 nye cmdlets. De viktigste egenskapene til PowerShell 2.0 er: Windows PowerShell ISE PowerShell Remoting Bakgrunns jobber (PSJob) Script debugging Eventing kan bruke management og system events til å få script til å kjøre. Det kom også mer enn 240 nye cmdlets. PowerShell versjon 3.0 PowerShell versjon 3.0 ble utgitt i September 2012 og er integrert i Windows 8 og Windows Server 2012, det er også tilgjengelig for Windows 7 Service Pack 1, Windows Server 2008 Service Pack 1 og Windows Server 2008 Service Pack 1. De viktigste nye egenskapene til PowerShell 3.0 er: Scheduling Forbedret scripteditor (ISE) Delegering av rettigheter Mulighet til å oppdatere hjelpefiler Nye kommandoer nye moduler og cmdlets automatiserer print management.
Intro til PowerShell side 5 av 12 PowerShell versjon 4.0 PowerShell versjon 4.0 kom sammen med Windows 8.1 og Windows Server 2012 R2. Det er også tilgjengelig for Windows 7 SP 1, Windows Server 2008 R2 SP1 og Windows Server 2012. De viktigste nye egenskapene til PowerShell 4.0 er: Ny default policy (endret til RemoteSigned på servere) Forbedret debugging Nye cmdlets og parametere til eksisterende cmdlets 2.3. Systemkrav Her tar vi for oss systemkravene til Windows PowerShell 4.0, siden dette er den nyeste PowerShell versjonen som er kommet ut. Windows PowerShell 4.0 kjører på følgende versjoner av Windows. Windows 8.1, dette er også integrert i operativsystemet Windows Server 2012 R2, dette er integrert i operativsystemet Windows 7 med Service Pack 1 (Må ha installert Windows Management Framework 4.0) Windows Server 2008 R2 med Service Pack 1 (Må ha installert Windows Management Framework 4.0) Windows PowerShell 4.0 krever at man har installert Microsoft.NET Framework 4.5. Windows PowerShell 4.0 krever at man har installert Windows Management Instrumentation 3.0 (WMI)
Intro til PowerShell side 6 av 12 3. Kom i gang med PowerShell 3.1. 2.1 Hvordan kjøre en kommando Starte PowerShell Vi skal nå se på hvordan en kan kjøre en kommando i PowerShell fra kommandolinjen. Alle Windows maskiner siden Windows XP har kommet med forhåndsinstallerte PowerShell versjoner. For å kunne åpne PowerShells kommandovindu kan en trykke på start knappen å skrive inn PowerShell. Det som vises under er et bilde av hvordan det ser ut når en trykker på start knappen for så å skrive inn PowerShell på en Windows 8 maskin. Når en har funnet PowerShell på maskinen og åpnet det vil det se slik ut:
Intro til PowerShell side 7 av 12 PowerShell som administrator Nå skal vi lære rask hvordan en kjører PowerShell som administrator. PowerShell som administrator fungere ved å høyre klikke på PowerShell ikonet og velger «Run as Adminstaror» og «kjør som administrator» 2.1.2 Kjøre PowerShell kommandoer Det er viktig å være klar over hvordan PowerShell er bygd opp for virkelig å kunne bruke det. PowerShell er bygd opp ved verb-substantiv. Gjennom denne oppbygningen er det lett å vite hva en kan forvente seg av hver kommando. Denne kommandoen utfører det samme cd (UNIX) og set-location (PowerShell). Det er lett å skjønne at set-location endrer hvor en står i mappehierarkiet, men det er ikke lett å skjønne at cd utfører samme oppgave. For å vise hvordan en kan kjøre en kommando skal vi i dette eksempelet benytte oss av process kommandoen. Først skal vi starte en prosess ved hjelp av programmet notepad.exe. Etter det skal vi finne den prosessen og til slutt skal vi stoppe notepad prosessen. Starter notepad Deretter skal vi finne notepad prosessen. Det gjør vi ved å benytte oss av get-process. Getprocess kommandoen lister ut alle prosesser som kjører på maskinen derfor skriver vi notepad bak get-process for å bare liste ut notepad prosesser. Nå skal vi stoppe prosessen. Det er flere måter en kan stoppe en prosess på, men de to vanligste er å stoppe en prosess på enten ProcessName eller «Id». Faren ved å stoppe en prosess ved hjelp av ProcessName er at flere prosesser kan ha det samme navnet, og dermed kan en avslutte en prosess som en ikke hadde tenkt til å avslutte. I vårt tilfelle er det bare en prosess som har ProsessName notepad så faren er liten, men som er regel så er det lurt å benytte seg av «Id» hvis en bare skal avslutte en prosess. Da har en full kontroll over hva som blir avsluttet siden hver prosess har et unikt Id-nummer.
Intro til PowerShell side 8 av 12 3.2. 2.2 basis kunnskaper Hvordan finne kommandoer Noen ganger er en ikke helt sikker på hva en trenger for å utføre en kommando, men en har en ide hva en trenger. Det kan være at en vet verbet og ikke substantivet, eller en vet at en kommandoen har en get kommando men en er ikke sikker på de andre verbene til kommandoen. For å kunne benytte seg av get-command er det viktig å vite om bruk av *. Bruk av * tar alle muligheter. Som en kan se fra eksemplet tar en alle kommandoer som inneholder item. For å finne en kommando der en vet verbet, men ikke substantivet. Da kan en bruke kommandoen: Get-Command «verb»-* For å finne ut hvilke verb varianter et substantiv har: Get-Command *-«substantiv» Hvordan bruke hjelp kommandoen Første gang en skal bruke hjelp kommandoen er det viktig å oppdatere hjelp funksjonen. Det gjør en med kommandoen: Update-Help -Force Hjelp kommandoen er en veldig nyttig hjelpemiddel når en skal benytte en kommando en ikke er kjent med fra før. De som er kjent med UNIX vet at dette ikke er noe nytt. PowerShells hjelp funksjon tilbyr informasjon om kommandoen en ønsker og eksempel for kommandoen med noen opsjoner. Og ved å kunne benytte seg av hjelp kommandoen vil en kunne forstå hva en kommando gjør og ikke minst hva den trenger for å fungere.
Intro til PowerShell side 9 av 12 I dette eksempelet skal vi vise hjelp informasjon om get-process kommandoen: Nå skal vi få et eksempel med bruk av -Eksamples opsjonen. Da får en tips til bruk av Get- Process og hva som blir utført ved å bruke den opsjonen. Det vil variere hvor mange opsjoner som er vist med eksempler på hver opsjon. En kan se at Get-Process: 2.2. tab funksjonen De som har vært borti UNIX vet at ved hjelp av Tab funksjonen kan effektivisere og minimere skrivefeil når en skriver i kommandolinjen. Tab funksjonen hjelper brukeren å fullføre en kommandoer og opsjoner. For å benytte seg av Tab funksjonen kan en prøve å skrive inn get-co<tab> -n<tab> da vil en se at PowerShell forandrer dette om til Get-Command name. Her kan en tydelig se at det går raskere, og det minimere å gjøre enkle skrivefeil. Det er lurt å lære seg dette så tidlig som mulig, for på lang sikt vil dette kunne spare deg for mye tid. 2.2. navigering Nå skal vi lære hvordan en kan navigere seg rundt i filsystemet. De som har vært borti DOS og UNIX vet at en kan benytte seg av «cd» for å navigere, men siden PowerShell benytter seg av verb-substantiv vil en helst gå bort fra «cd» kommandoen og over til PowerShells egen kommando som er set-location.
Intro til PowerShell side 10 av 12 Nå skal vi vise noen varianter av set-location: I dette eksempelet skal vi gå fra mappen «C:\PowerShell\» til C:\PowerShell\test. Som du kan se benytter vi oss av set-location og stien til test mappen. I sist eksempel var kunne en se at det var litt tungvint å skrive hele stien når en allerede stående mappe var C:\PowerShell\. Dermed skal vi forbedre det ved å benytte oss av.\ bak set-location. Når en skriver.\ bak set-location vil en bruke stående mappe som utgangspunkt. Da kan en gjør kommandoen som tidligere ble brukt litt kortere. Et annet eksempel er bruk av to punktum etter set-location. Da vil en gå et hopp tilbake i mappetreet. Dette er en lett måte å flytte seg et hakk opp i mappetreet.
Intro til PowerShell side 11 av 12 Utlisting av informasjon i en mappe Nå skal vi liste ut alt av informasjon som er i en mappe. DOS og UNIX bruker «ls» for å liste ut informasjon PowerShell benytter «get-childitem» for utlisting av informasjon av en mappe. Vi skal nå liste ut informasjon i stående mappe: Det andre eksempelet skal vi liste ut informasjon ut fra C:\ når vi står i en annen mappe. Vi benytter opsjonen -path for å spesifisere stien til mappen: Kopiere og flytte Vi skal nå se på hvordan vi kan flytte og kopiere en fil. Nå skal vi kopiere fila hei.txt over til mappa test. Vi bruker punktum for å spesifisere hvor vi er, dermed slipper vi å skrive hele stien siden vi er i stående mappe.
Intro til PowerShell side 12 av 12 Det andre eksempelet skal vi flytte alle filer med filtype.txt fra stående mappe til mappen test. Som en kan se bruker vi * når vi skal flytte flere filer, som nevnt tidligere betyr det alle: