Utforsk kraften i Windows PowerShell: En innføring for avanserte brukere
For de som er vant til å bruke Windows på et avansert nivå, er det velkjent at mange PC-operasjoner kan utføres på flere måter. Det er også en kjent sak at grafiske brukergrensesnitt (GUI) ofte kan virke begrensende, og at det å skrive kommandoer direkte i en kommandolinje gir en helt annen følelse av kontroll. Det er en viss tilfredsstillelse i å se tekstlinjene rulle forbi, spesielt når resultatet ikke er en feilmelding.
På Windows-maskiner kan dette primært gjøres gjennom to grensesnitt: CMD og PowerShell. Selv om CMD er et velkjent verktøy, er PowerShell langt mer kraftfullt. PowerShell kan utføre alle operasjoner som er tilgjengelige i CMD, og mye mer. Det kan sies at PowerShell kombinerer funksjonene til CMD med avanserte skriptmuligheter og «cmdlets», noe som gir en enorm fleksibilitet i hvordan du administrerer systemet ditt.
Men denne friheten kan også være overveldende, selv for erfarne brukere, og for de som er nye til kommandolinjeverktøy kan PowerShell virke skremmende. Derfor skal vi i denne artikkelen se på noen grunnleggende triks og kommandoer som kan hjelpe deg å navigere i PowerShell. Selv om dette ikke vil være en fullstendig manual, håper vi at det vil gi deg en god start og hjelpe deg å forstå hvordan PowerShell fungerer. La oss begynne!
Hva er egentlig PowerShell?
Som nevnt, er PowerShell et kraftig verktøy som kan brukes til et bredt spekter av operasjoner. Det er en løsning for oppgaveautomatisering som inneholder mange verktøy, inkludert et kommandolinjeskall (som CMD), et skriptspråk og et rammeverk for konfigurasjonsadministrasjon.
I motsetning til andre skall som kun jobber med tekst, kan PowerShell også behandle .NET-objekter. Dette er takket være en unik kombinasjon av funksjoner. Noen av de viktigste funksjonene i PowerShell er:
- Kommando prediksjon og tabulatorfullføring.
- Støtte for parametere og kommando alias.
- En omfattende kommandolinjehistorikk.
- Evnen til å lenke kommandoer via pipelining.
- Et innebygget hjelpesystem, som ligner på man-sidene i Unix-baserte systemer.
Men dette er bare toppen av isfjellet. PowerShell er mer enn bare et skall. Det er et kraftig skriptspråk som lar deg automatisere systemadministrasjonsoperasjoner, bygge, analysere, teste og distribuere løsninger i forskjellige miljøer.
Siden PowerShell er basert på .NET CLR (.NET Common Language Runtime), jobber den utelukkende med .NET-objekter. Dette gjør det unødvendig å analysere tekstoutput for å hente ut informasjon. PowerShells skriptfunksjoner inkluderer:
- Et avansert formateringssystem for ren og oversiktlig utskrift.
- Mulighet for å skape dynamiske typer gjennom et avansert typesystem.
- Utvidbarhet gjennom klasser, funksjoner, moduler og skript.
- Innebygget støtte for forskjellige dataformater som XML, JSON og CSV.
Hvis du er interessert i å administrere og konfigurere infrastruktur via kode, vil du glede deg over at PowerShell også tilbyr dette gjennom rammeverket Desired State Configuration (DSC). DSC muliggjør:
- Implementering av konfigurasjoner via push- eller pull-modeller.
- Design av skreddersydde skript og deklarative konfigurasjoner for repeterbare distribusjoner.
- Håndheving av konfigurasjonsskjemaer.
- Rapportering av avvik i konfigurasjoner.
PowerShell har et eget kommandolinjespråk som ligner litt på Perl. I utgangspunktet var det laget for å hjelpe brukerne med å administrere objekter på datamaskinene sine. Men som du ser, har det utviklet seg til et kraftig verktøy for langt mer komplekse oppgaver.
Du kan bruke PowerShells miljø til å utføre ulike systemadministrasjonsoperasjoner og automatisere dem, slik at du ikke trenger å bruke tid på kjedelige, repetitive oppgaver. Det er også verdt å nevne at PowerShell gir deg tilgang til mange ressurser fra ett program:
- Windows Management Instrumentation (WMI).
- .NET Framework API.
- Kommandolinjen.
- Windows Component Object Model (COM).
- PowerShell-kommandoer.
I dag er et av de mest populære bruksområdene for PowerShell å automatisere systemadministrasjonsoppgaver, slik at brukerne kan slippe å utføre en rekke kjedelige og repetitive operasjoner. Automatisering reduserer menneskelige feil og øker effektiviteten.
PowerShell kan brukes til å skrive enkle eller komplekse kommandoer, og det kan hjelpe deg å lage skript basert på disse kommandoene. Videre har du tilgang til et enormt antall kommandoer som kan tilpasses og brukes, kalt cmdlets.
PowerShell er også plattformuavhengig og åpen kildekode. Dette betyr at du kan bruke det på systemer som Mac og Linux, uten å trenge å bruke kompliserte verktøy som Wine eller Boot Camp.
Grunnleggende PowerShell-kommandoer
Det er forståelig at PowerShell kan virke overveldende, spesielt når du innser at det er mye mer enn en vanlig kommandolinje. Det omfatter både CMD-funksjonalitet og et programmeringsspråk, samt muligheten for å skrive skript for å automatisere systemadministrasjon.
Hvis du er fast bestemt på å mestre PowerShell, anbefaler vi at du begynner med det grunnleggende. Dette vil hjelpe deg å unngå feil som kan ødelegge mye arbeid. Derfor har vi satt sammen en liste over grunnleggende kommandoer du kan bruke til å utforske funksjonene i dette kraftige programmet.
Listen inneholder kommandonavn, aliaser og korte beskrivelser av hva hver kommando gjør. Husk at du kan bruke enten kommandonavn eller aliaser for å oppnå samme resultat. Aliasene er ofte kortere og raskere å skrive. Hvis du klarer å huske de riktige aliasene, kan du jobbe mer effektivt.
Kommandonavn | Alias | Beskrivelse |
Add-Content | ac | Legger til innhold (som ord eller data) i en fil. |
Add-PSSnapIn | asnp | Legger til Windows PowerShell snap-in-moduler. |
Clear-Content | clc | Sletter innholdet i et element uten å slette selve elementet. |
Clear-History | clhy | Fjerner alle oppføringer fra kommandohistorikken. |
Clear-Host | clear | Tømmer skjermen. |
Clear-Host | cls | Tømmer skjermen. |
Clear-Item | cli | Fjerner innholdet i et element. |
Clear-ItemProperty | clp | Sletter en egenskap. |
Clear-Variable | clv | Sletter en variabels verdi. |
Compare-Object | compare | Sammenligner to sett med objekter. |
Compare-Object | diff | Sammenligner to sett med objekter. |
Connect-PSSession | cnsn | Kobler til en frakoblet økt. |
Convert-Path | cvpa | Konverterer en PowerShell-bane til en leverandørbane. |
Copy-Item | copy | Kopierer et element. |
Copy-Item | cp | Kopierer et element. |
Copy-Item | cpi | Kopierer et element. |
Copy-ItemProperty | cpp | Kopierer en egenskap. |
Disable-PSBreakpoint | dbp | Deaktiverer bruddpunkter i gjeldende konsoll. |
Disconnect-PSSession | dnsn | Kobler fra gjeldende økt. |
Enable-PSBreakpoint | ebp | Aktiverer bruddpunkter i gjeldende konsoll. |
Enter-PSSession | etsn | Starter en interaktiv økt med en ekstern enhet. |
Exit-PSSession | exsn | Avslutter en interaktiv økt med en ekstern enhet. |
Export-Alias | epal | Eksporterer aliaser til en fil. |
Export-Csv | epcsv | Konverterer objekter til CSV-format. |
Export-PSSession | epsn | Importerer kommandoer fra en økt og eksporterer dem til en modul. |
ForEach-Object | % | Utfører en operasjon på hvert element i en samling. |
ForEach-Object | foreach | Utfører en operasjon på hvert element i en samling. |
Format-Custom | fc | Formaterer utdata med en egendefinert visning. |
Format-List | fl | Formaterer utdata som en egenskapsliste. |
Format-Table | ft | Formaterer utdata som en tabell. |
Format-Wide | fw | Formaterer utdata som brede tabeller. |
Get-Alias | gal | Henter aliaser for gjeldende økt. |
Get-ChildItem | dir | Henter en liste over filer og mapper. |
Get-ChildItem | gci | Henter en liste over filer og mapper. |
Get-ChildItem | ls | Henter en liste over filer og mapper. |
Get-Command | gcm | Henter en liste over tilgjengelige kommandoer. |
Get-Content | cat | Viser innholdet i en fil. |
Get-Content | gc | Viser innholdet i en fil. |
Get-History | ghy | Henter en liste over tidligere kommandoer. |
Get-History | h | Henter en liste over tidligere kommandoer. |
Get-History | history | Henter en liste over tidligere kommandoer. |
Get-Item | gi | Henter filer og mapper. |
Get-ItemProperty | gp | Henter egenskapene til et element. |
Get-Job | gjb | Henter en liste over bakgrunnsjobber. |
Get-Location | gl | Henter informasjon om gjeldende plassering. |
Get-Location | pwd | Henter informasjon om gjeldende plassering. |
Get-Member | gm | Henter egenskaper og metoder for objekter. |
Get-Module | gmo | Henter en liste over importerte eller tilgjengelige moduler. |
Get-Process | gps | Henter en liste over prosesser som kjører. |
Get-Process | ps | Henter en liste over prosesser som kjører. |
Get-PSBreakpoint | gbp | Henter bruddpunkter i gjeldende økt. |
Get-PSCallStack | gcs | Viser anropsstakken. |
Get-PSDrive | gdr | Henter stasjoner i gjeldende økt. |
Get-PSSession | gsn | Henter en liste over PowerShell-økter. |
Get-PSSnapIn | gsnp | Henter en liste over snap-in-moduler. |
Get-Service | gsv | Viser tjenester. |
Get-Unique | gu | Henter unike elementer fra en sortert liste. |
Get-Variable | gv | Henter en liste over variabler. |
Get-WmiObject | gwmi | Henter Windows Management Instrumentation (WMI) klasser. |
Group-Object | group | Grupperer objekter med samme verdi for egenskaper. |
help | man | Viser detaljert informasjon om PowerShell-kommandoer. |
Import-Alias | ipal | Importerer aliaser fra en fil. |
Import-Csv | ipcsv | Bygger tabellobjekter fra en CSV-fil. |
Import-Module | ipmo | Importerer moduler til gjeldende økt. |
Import-PSSession | ipsn | Importerer kommandoer fra en annen økt. |
Invoke-Command | icm | Utfører kommandoer på lokale eller eksterne datamaskiner. |
Invoke-Expression | iex | Utfører kommandoer eller uttrykk lokalt. |
Invoke-History | ihy | Utfører kommandoer fra kommandohistorikken. |
Invoke-History | r | Utfører kommandoer fra kommandohistorikken. |
Invoke-Item | ii | Utfører standard handling på et element. |
Invoke-RestMethod | irm | Sender en HTTP- eller HTTPS-forespørsel til en RESTful-netttjeneste. |
Invoke-WebRequest | curl | Henter innhold fra en nettside. |
Invoke-WebRequest | iwr | Henter innhold fra en nettside. |
Invoke-WmiMethod | iwmi | Utfører Windows Management Instrumentation (WMI) metoder. |
Measure-Object | measure | Bestemmer numeriske egenskaper til objekter. |
mkdir | md | Oppretter en ny katalog. |
Move-Item | mi | Flytter et element. |
Move-Item | move | Flytter et element. |
Move-Item | mv | Flytter et element. |
Move-ItemProperty | mpp | Flytter en egenskap. |
New-Alias | nal | Oppretter et nytt alias. |
New-Item | ni | Oppretter et nytt element. |
New-Module | nmo | Genererer en ny dynamisk modul. |
New-PSDrive | mount | Lager midlertidige eller permanente kartlagte stasjoner. |
New-PSDrive | ndr | Lager midlertidige eller permanente kartlagte stasjoner. |
New-PSSession | nsn | Etablerer en tilkobling til en lokal eller ekstern datamaskin. |
New-PSSessionConfigurationFile | npssc | Oppretter en øktkonfigurasjonsfil. |
New-Variable | nv | Oppretter en ny variabel. |
Out-GridView | ogv | Viser utdata i et interaktivt tabellvindu. |
Out-Host | oh | Sender utdata til kommandolinjen. |
Out-Printer | lp | Sender utdata til en skriver. |
Pop-Location | popd | Endrer gjeldende posisjon til sist skjøvede posisjon. |
powershell_ise.exe | ise | Viser en forklaring på hvordan man bruker PowerShell_ISE.exe. |
Push-Location | pushd | Legger til gjeldende plassering i en plasseringsstabel. |
Receive-Job | rcjb | Henter resultatene av en bakgrunnsjobb. |
Receive-PSSession | rcsn | Henter resultatene av en frakoblet økt. |
Remove-Item | del | Fjerner filer og mapper. |
Remove-Item | erase | Fjerner filer og mapper. |
Remove-Item | rd | Fjerner filer og mapper. |
Remove-Item | ri | Fjerner filer og mapper. |
Remove-Item | rm | Fjerner filer og mapper. |
Remove-Item | rmdir | Fjerner mapper. |
Remove-ItemProperty | rp | Sletter en egenskap. |
Remove-Job | rjb | Sletter en bakgrunnsjobb. |
Remove-Module | rmo | Fjerner moduler fra gjeldende økt. |
Remove-PSBreakpoint | rbp | Fjerner bruddpunkter. |
Remove-PSDrive | rdr | Fjerner stasjoner. |
Remove-PSSession | rsn | Lukker PowerShell-økter. |
Remove-PSSnapIn | rsnp | Fjerner snap-in-moduler. |
Remove-Variable | rv | Fjerner en variabel. |
Remove-WmiObject | rwmi | Sletter en WMI-klasse. |
Rename-Item | ren | Endrer navnet på et element. |
Rename-Item | rni | Endrer navnet på et element. |
Rename-ItemProperty | rnp | Endrer navnet på en egenskap. |
Resolve-Path | rvpa | Løser jokertegn i en sti. |
Resume-Job | rujb | Starter en suspendert jobb på nytt. |
Select-Object | select | Velger objekter eller egenskaper. |
Set-Alias | sal | Oppretter eller endrer et alias. |
Set-Content | sc | Erstatter innholdet i en fil med innhold du angir. |
Set-Item | si | Endrer et elements verdi. |
Set-Location | cd | Endrer gjeldende arbeidsplassering. |
Set-Location | chdir | Endrer gjeldende arbeidsplassering. |
Set-PSBreakpoint | sbp | Setter et bruddpunkt. |
Set-Variable | set | Setter en variabels verdi. |
Show-Command | shcm | Viser en liste over kommandoer i et grafisk vindu. |
Start-Job | sajb | Starter en bakgrunnsjobb. |
Start-Process | start | Starter en eller flere lokale prosesser. |
Start-Service | sasv | Starter tjenester. |
Stop-Process | kill | Stopper en eller flere prosesser. |
Where-Object | ? | Velger objekter basert på egenskapsverdier. |
Write-Output | echo | Sender et objekt til pipelinen. |
Ikke la deg overvelde av antallet kommandoer. Det er ikke nødvendig å huske dem alle. Denne listen er ment som en referanse som du kan bruke for å utforske PowerShell. Du kan bruke nettleserens søkefunksjon for å finne en bestemt kommando eller alias. Hvis du er usikker på hvordan en kommando fungerer, kan du bruke hjelpefunksjonen for å få mer informasjon. Hjelp-kommandoen kan brukes med en hvilken som helst kommando for å få detaljert informasjon om den. Du kan for eksempel skrive «help Add-Computer» for å se informasjon om denne kommandoen.
Husk at én kommando kan ha flere aliaser, noe som gir deg fleksibilitet hvis du ikke husker et bestemt alias.
Hvordan bruke PowerShell
Det første du må gjøre er naturligvis å åpne PowerShell. En rask måte å gjøre det på er å holde nede Shift-tasten, høyreklikke i et tomt område på skjermen, og velge «Åpne PowerShell-vindu her» fra hurtigmenyen.
Dette vil åpne PowerShell og automatisk sette standard arbeidskatalog til den du befinner deg i. På Windows 10 kan du også åpne PowerShell ved å trykke på Win-tasten, skrive «PowerShell» og velge PowerShell fra resultatlisten.
Eldre versjoner av Windows kan kreve at du finner PowerShell-filen manuelt. Denne kan være i Tilbehør- eller System-mappene i Start-menyen. Det er verdt å merke seg at eldre systemer som Windows 7 kanskje ikke har PowerShell som standard og krever at du installerer den.
Hvis du starter PowerShell fra Start-menyen, vil den aktive arbeidskatalogen være C:Users[ditt brukernavn her]. Bruker du Shift + Høyreklikk-metoden, vil den aktive katalogen være den du var i da du startet konsollen. For eksempel, hvis du åpner PowerShell fra skrivebordet med Shift + Høyreklikk, vil den aktive katalogen være C:Users[ditt brukernavn her]Skrivebord.
Selv om PowerShell fint kan brukes til hjemmebruk, er det spesielt nyttig for bedrifter som må utføre mange operasjoner raskt, ofte på mange enheter. I stedet for å kjøre hver kommando manuelt på hver maskin, kan du lage et automatiseringsskript i PowerShell og motta informasjonen du trenger automatisk. PowerShell kan brukes via kommandolinjer, som CMD, men det kan også kjøre skript og cmdlets, noe som gjør det mer kraftfullt.
Hvordan bruke cmdlets
Vi har brukt begrepet cmdlets flere ganger. En cmdlet er en kommando som er spesifikk for PowerShell. Den utfører en enkelt operasjon som å kopiere filer, flytte elementer, endre den aktive katalogen eller se innholdet i et element.
Cmdlets er kommandoer du kan skrive direkte i PowerShells kommandolinje. Hvis du har erfaring med CMD, vil du finne PowerShell relativt intuitivt å bruke. PowerShell deler mange kommandoer med CMD. For eksempel, «cd» endrer den aktive katalogen, «dir» viser innholdet i gjeldende mappe, og «cp» kopierer et element.
PowerShell skiller ikke mellom store og små bokstaver. «Copy-item» fungerer like bra som «Copy-Item». Du kan også bruke aliaser som «copy», «CP» og «CPI».
De fleste PowerShell-cmdlets er skrevet i C# og returnerer et .NET-objekt som resultat. Du har for øyeblikket tilgang til flere hundre cmdlets som lar deg utføre et bredt spekter av operasjoner.
Det kan være vanskelig å huske alle cmdlets (bruk gjerne tabellen over). Men noen cmdlets brukes hyppigere og er enklere å huske. Mange av dem er også intuitive, som «copy» for å kopiere elementer, «move» for å flytte filer, og «compare» for å sammenligne sett med objekter.
Hvis du ikke ønsker å bruke denne artikkelen som referanse, kan du også skrive «Get-Command» eller «gcm» i PowerShell. Dette vil vise en liste over alle tilgjengelige kommandoer.
Slik låser du opp egendefinerte cmdlets
Microsoft gir ikke full tilgang til alle cmdlets som standard. Du må utføre noen ekstra trinn for å låse opp denne funksjonen. Men dette er en rask prosess som kan gjøres gjennom PowerShell.
Slik gjør du det:
- Logg på en administratorkonto (du trenger administratorrettigheter).
- Start PowerShell med administratorrettigheter («Kjør som administrator»).
- Skriv følgende kommando i PowerShell og trykk Enter:
Set-ExecutionPolicy
- PowerShell vil spørre deg om den nye ExecutionPolicy-verdien.
- Skriv «RemoteSigned» og trykk Enter.
- PowerShell vil informere deg om risikoen ved å endre ExecutionPolicy.
- Skriv «Y» og trykk Enter.
Hvis du vil deaktivere egendefinerte cmdlets, følger du trinn 1-4, men skriver «Restricted» i trinn 5 og bekrefter valget ditt i trinn 7.
Du kan også strømlinjeforme prosessen ved å kjøre kommandoen nedenfor i PowerShell med administratorrettigheter:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Du må fortsatt bekrefte valget ditt ved å skrive «Y» og trykke Enter. Du kan bruke denne kommandoen til å deaktivere egendefinerte cmdlets. Bare bytt ut «RemoteSigned» med «Restricted».
Du kan også bruke «AllSigned» eller «Unrestricted» for å gi deg selv flere privilegier. «AllSigned» lar deg kjøre alle skript fra pålitelige utgivere, mens «Unrestricted» lar PowerShell kjøre alle skript, uavhengig av opprinnelse. «Unrestricted» er det farligste alternativet og bør unngås, spesielt for nybegynnere.
Ser du? PowerShell begynner allerede å bli mer tilgjengelig!
Hvordan lage og bruke skript i PowerShell
Som nevnt, kan du bruke PowerShell til å kjøre automatiseringsskript. Du kan ikke forvente at PowerShell bare lager skript for deg, så du må gjøre litt arbeid selv. Det er faktisk en fordel at du må gjøre det selv.
De fleste av oss bruker spesialiserte programmer som IDE-er for å lage skript. Men du kan bruke en hvilken som helst tekstredigerer som kan lagre filer med riktig filtype. Et PowerShell-skript er egentlig bare et tekstdokument med en .PS1-filtype.
Her er et enkelt eksempel:
Write-host "Vennligst skriv inn navnet ditt:"
$Name = read-host
"Hei $Name! Besøk wdzwdz.com for flere fantastiske opplæringsprogrammer og guider!"
Slik lager du skriptet:
- Start Notisblokk (eller en annen tekstredigerer).
- Kopier koden over.
- Lim koden inn i Notisblokk.
- Trykk CTRL + S for å lagre dokumentet.
- Skriv inn script.ps1 som filnavn.
- Lagre filen på et tilgjengelig sted.
- Åpne en PowerShell-instans med administratorrettigheter.
- Sørg