intro til powershell - ntnu.no ls01-intro til powershell... · intro til powershell side 2 av 12...
TRANSCRIPT
Opphavsrett: Forfatter
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
Intro til PowerShell side 2 av 12
Opphavsrett: Forfatter og stiftelsen TISIP
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
Opphavsrett: Forfatter og stiftelsen TISIP
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 batch-
filer, 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
Opphavsrett: Forfatter og stiftelsen TISIP
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
Opphavsrett: Forfatter og stiftelsen TISIP
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
Opphavsrett: Forfatter og stiftelsen TISIP
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
Opphavsrett: Forfatter og stiftelsen TISIP
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. Get-
process 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
Opphavsrett: Forfatter og stiftelsen TISIP
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
Opphavsrett: Forfatter og stiftelsen TISIP
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
Opphavsrett: Forfatter og stiftelsen TISIP
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
Opphavsrett: Forfatter og stiftelsen TISIP
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
Opphavsrett: Forfatter og stiftelsen TISIP
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: