Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag Profiler og variabler Stein Meisingseth 26.05.2014 Lærestoffet er utviklet for faget IDRI3005 PowerShell 1. Profiler og variabler Resymé: Denne leksjonen inneholder gir en intro til profiler og variabler. Innhold 1. PROFILER OG VARIABLER... 1 1.1. PROFILER... 2 Hva er profiler i Powershell... 2 Oppretting av profil... 2 Skrive til Profil... 2 1.2. OPPRETTE OG KJØRE SCRIPT... 3 Kjøre script... 3 Hvordan opprette og kjøre script... 4 1.3. POWERSHELL ISE... 4 PowerShell ise oppbyging... 4 Kjøre et script... 5 1.4. FORMATERE UTDATA... 6 1.5. ALIAS... 6 2. 3.0 VARIABLER... 7 2.1. 3.1 HVORDAN OPPRETTE OG BRUKE VARIABLER... 9 3.1.1 Opprette og lagre informasjon i Variabler... 9 3.1.2 Bruke variabler... 9 2.2. 3.2 VIS EGENSKAPER PÅ LISTEFORM... 10 Opphavsrett: Forfatter
Profiler og variabler side 2 av 10 1.1. Profiler I dette del kapittelet skal vi se på hva en profil er i PowerShell, og hvordan en kan lage en PowerShell profil. Hva er profiler i Powershell Profiler i PowerShell er så enkelt som et script som kjører når en åpner en PowerShell. I et slikt script kan en bruke alt av cmdlet, script, funksjoner og andre godkjente PowerShell kommander. Det viktig å være klar over at PowerShell og PowerShell ISE ikke benytter seg av samme profil. Oppretting av profil Når en skal lage en profil første gang må en opprette mappen og filen hvor profilen skal lagres. Det er viktig å være klar over at variabelen $PROFILE inneholder stien til hvor PowerShell profilen ligger. New-Item ItemType file Path $PROFILE -Force Skrive til Profil For å skrive til en profil er det vanlig å bruke Notepad er det mange programmer en kan bruke vi skal vise dette ved hjelp av Notepad dette er et program som alle Windows maskiner har. notepad.exe $PROFILE Når en kjører kommandoen over vil en få opp et notepad vindu som vist under. En kan se at det ikke er mye i profilen, men vi spesifisere hvor PowerShell skal åpnes og oppretter et Alias. Alias kommer vi tilbake til ganske snart.
Profiler og variabler side 3 av 10 1.2. Opprette og kjøre script Her skal vi lære hvordan vi kan kjøre script. Kjøre script For å kjøre et script i PowerShell må en ha riktige rettigheter. PowerShell lar i utgangspunktet ikke brukeren kjøre script, dette er fordi at mesteparten av brukerdatabasen til Windows PowerShell ikke har behov for å kjøre script. Det fungerer altså som en beskyttelse for brukere. PowerShell har syv ulike rettighets nivåer: Restricted: Ingen script vil kjøre. Dette er standard policyen til Windows PowerShell. RemoteSigned: Script som er produsert lokalt eller er digitalt signert av en godkjent signatur vil kjøre, men script som er lastet ned fra internett vil ikke kjøre. Dette høres sikrere ut en det er. Hvis en laster ned fra Internett Explorer eller Outlook vil scriptet en har lastet ned få godkjent signatur. Dermed er ikke sikkerheten veldig høy her heller. AllSigned: Script må ha en godkjent signatur for å kjøre. Unrestricted: Alle script kan kjøres. Gir deg derimot en advarsel når man forsøker å kjøre script som er lastet ned fra internett. Bypass: ingenting er blokkert og en får ikke opp noen advarsler, «ansvaret» er plassert på brukeren. Undefined: Fjerner alle rettigheter og setter de tilbake til default. Fjerner ikke GroupPolicy regler. Default: Setter rettigheten tilbake til standard verdi. Nå skal vi finne og sette rettigheter. For å finne hvilken ExecutionPolicy som er gjeldende på systemet kan vi bruke følgende setning: Vi skal bruke RemoteSigned når vi skal sette rettigheter til script. Vi forklarte at det ikke er veldig sikkert å bruke RemoteSigned, men det er nok når vi skal teste å kjøre lokalt. Hvis en ønsker mer sikkerhet brukere en AllSigned. Når man skal endre på gjeldende ExecutionPolicy bruker man cmdlet-en Set-ExecutionPolicy $ønsketpolicy Eks:
Profiler og variabler side 4 av 10 Hvordan opprette og kjøre script Nå skal vi opprette og kjøre et PowerShell script ved hjelp av notepad. Vi skal senere se at dette kan gjøres med PowerShell ISE, men det er greit å være klar over at det er flere måter å gjøre det på. Script filer for PowerShell blir lagret som.ps1 filer. Nå skal vi produsere et lite script. Scriptet skriver vi i notepad vinduet som kommer frem. Scriptet i seg selv er ikke så viktig, dette er bare for å se hvordan det fungerer. Når en er ferdig å skrive scriptet lagrer en. Nå skal vi tilslutt kjøre scriptet. For å kjøre scriptet må en skrive inn stien til scriptet: 1.3. PowerShell ISE Som vi har nevnte tidligere finnes det noe som heter PowerShell ISE. Dette er script verktøyet som kommer med Windows til PowerShell. Vi kommer ikke til å ta med alle funksjoner som finnes i dette verktøyet. Det ville tatt for mye plass. Vi skal i hovedsak vise hvordan en kan kjøre en kommando fra PowerShell ISE. PowerShell ise oppbyging Som en kan se av bilde under er PowerShell ISE delt inn i tre separate vinduer. På toppen har en script editoren. Nede har en PowerShell vinduet. Det fungerer på samme måte som det vanlige PowerShell vinduet vi har jobbet med frem til nå. Til høyre har vi et vindu som har en søkefunksjon etter kommandoer. Noe av det første en vi legge merke til når en starter å skrive i script editoren eller PowerShell vinduet er at en får en liste over muligheter en har. Denne listen vil forandre seg hele tiden så lenge en skriver. Dette er et veldig nyttig verktøy. Den hjelper til med cmdlet, funksjoner, variabler og opsjoner.
Profiler og variabler side 5 av 10 Kjøre et script Hvordan kjøre et script fra script editoren til PowerShell ISE. Som vi ser bruker vi samme script som tidligere. For å kjøre det denne gangen trenger vi bare å trykke f5 eller den grønne pila som er merket på bilde. Hvis ikke filen er lagret vil det komme et spørsmål om en vil lagre før en kjører scriptet.
Profiler og variabler side 6 av 10 1.4. Formatere utdata Nå skal vi se på hvordan vi kan formatere utdata. Det vil bli benytte Pipeline i dette kapitelet, dette er noe vi går nærmere inn på senere. Formatering av utdata gjør vi for å gjøre utskriften mer leselig for brukerene. Vi skal nå formatere utdata fra prosessene til chrome. Som vi ser av bilde har vi valgt å bare ta ut ProcessName, ID og CPU forbruk. Selve kommandoen kan virke lang men det er Format-List en skal fokusere på. 1.5. Alias Aliaser er enkelt sagt en snarvei til en kommando eller funksjoner. Ved å bruke aliaser kan en mer personalisert PowerShell sesjoner. Aliser blir brukt for å gi et mer beskrivende navn eller korte ned en kommando. Det er viktig å være klar over at aliaser ikke lagres. Når en lukker PowerShell vinduet er aliasene en har laget borte. Hvis en ønsker å lagre aliaser kan en legge de i PowerShell profilen. Når en har lagt aliasene inn i PowerShell profilen blir de lastet inn når en åpner en PowerShell sesjon. Hvordan en skriver til PowerShell profilen ser en i kapitel «Kom i gang med PowerShell» under «Profiler». Nå skal vi lage et alias, og benytte oss av aliaset i et eksempel der vi tar ut alle prosesser som bruker mer enn 50 sekunder CPU tid:
Profiler og variabler side 7 av 10 2. 3.0 Variabler I dette kapittelet skal vi ta for oss hva en variabel er, hvordan man bruker variabler og hvordan PowerShell håndterer variabler. Vi skal også ta for oss miljøvariabler og hvordan de kan manipuleres. Vi skal også innom.net objekter og scope. Hva er en variabel? Vi kan se for oss at en variabel er en «boks» der vi lagrer informasjon, som vi kan benytte på et senere tidspunkt. I PowerShell blir variablene knyttet opp mot underliggende klasser i.net rammeverket. I rammeverket er variablene objekter, noe som betyr at de kan ikke bare lagre data, men også manipulere data. Men hva er et objekt? En god forklaring som vi finner på powershellpro.com, der de forklarer det slik: As an example, let s look at a light bulb. The object should be obvious, it s a light bulb. The properties of a light bulb could be color, wattage, and type (florescent, incandescent, or halogen). Methods are the actions we can perform on the object such as; turn on the light bulb and turn off the light bulb. PowerShellPro.com I PowerShell må alltid variabelnavnet starte med «$», variabelnavnet er heller ikke casesensitiv, det vil si at det ikke har noe å si om en bruker store eller små bokstaver. En variabel kan også ha et hvilket som helst navn, med følgende unntak: Illegale karakterer: o!@#%&,. Og mellomrom Reserverte nøkkelord o Break o Continue o Do o Else o Elseif o Filter o Foreach o Function o If o In o Return o Switch o Until o Where o While Vi har også noen spesial-variabler som er predefinert i PowerShell, vi skal nevne noen eksempler under, dersom man vil se en oversikt over alle spesial-variablene som finnes i PowerShell kan man skrive følgende; Get-Help about_automatic_variables.
Profiler og variabler side 8 av 10 Eksempler på spesial-variabler: $_ - Inneholder gjeldende objekt i pipeline objektet $Error Inneholder en tabell over de siste feilmeldingene som har oppstått, den siste feilmeldingen er første objektet i tabellen $Home Brukeren sin hjemme mappe $Profile Lokasjonen til brukeren sin profil $PsHome Lokasjonen til installasjonsmappen for Windows PowerShell
Profiler og variabler side 9 av 10 2.1. 3.1 Hvordan opprette og bruke variabler Når vi først er inne på temaet variabler, er det naturlig å gå gjennom det helt grunnleggende. Altså hvordan vi oppretter og bruker variabler. 3.1.1 Opprette og lagre informasjon i Variabler PowerShell har en egen cmdlet for å opprette variabler. Dette gjøres med cmdlet-en setvariable. Denne brukes ved at vi gir navn på variabelen med Name og verdi til variabelen med Value, vi ser et eksempel på dette under. I PowerShell kan man også benytte en enklere metode for å opprette variabler. Dette er simpelthen ved å bruke «$» foran navnet på variabelen. Vi ser et eksempel på dette under. For å lagre eller endre informasjon i variablene, gjøres dette på samme måte som når vi oppretter variabler. Altså slik som bildet over illustrerer. 3.1.2 Bruke variabler For å kunne bruke variabler, må variabelen brukes på formen $[variabelnavn], vi arbeider videre på scriptet vi startet på i punkt 3.1.1 og har dette som utgangspunkt. Her ser vi at vi klarer å få riktig utskrift når vi bruker variabelen. Nå skal vi se hvordan variabelen kan brukes i et script. Vi sjekker innholdet i variabelen opp mot et forhåndsbestemt navn og ser at dette fungerer tilfredsstillende. if ($navn eq "Hans Hansen") { Write-Host "Navnet stemmer!" } else { Write-Host "Navnet stemmer ikke!" }
Profiler og variabler side 10 av 10 2.2. 3.2 vis egenskaper på listeform PowerShell har fire cmdlets for å formatere utskrift. De fire er Format-table, Format-List, Format-Wide og Format-Custom. Format-List tar inndata og viser informasjon om inndata som en liste. PowerShell henter listen av egenskaper som skal vises fra *.format.ps1xml filene i PowerShell sin installasjonsmappe. Ofte vil du bare få ut noen egenskaper når du velger Format-List, slik som vist under. Her ser vi at det bare er noen få egenskaper som vises. Dersom man skriver format-list * istedenfor vil man få ut flere egenskaper, i bildet under viser vi bare et lite utdrag av egenskapene som vises, siden det er såpass mange. Dersom man skriver Format-List * uten å få flere egenskaper er det mest sannsynlig at det er definert i *.format.ps1xml filene, men at det ikke definerer noe som skal vises for liste kommandoen. I slike tilfeller kan man prøve med Format-List Force.