Mester Windows PowerShell: Enkle triks & nyttige kommandoer


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:

  1. Logg på en administratorkonto (du trenger administratorrettigheter).
  2. Start PowerShell med administratorrettigheter («Kjør som administrator»).
  3. Skriv følgende kommando i PowerShell og trykk Enter:

Set-ExecutionPolicy

  1. PowerShell vil spørre deg om den nye ExecutionPolicy-verdien.
  2. Skriv «RemoteSigned» og trykk Enter.
  3. PowerShell vil informere deg om risikoen ved å endre ExecutionPolicy.
  4. 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:

  1. Start Notisblokk (eller en annen tekstredigerer).
  2. Kopier koden over.
  3. Lim koden inn i Notisblokk.
  4. Trykk CTRL + S for å lagre dokumentet.
  5. Skriv inn script.ps1 som filnavn.
  6. Lagre filen på et tilgjengelig sted.
  7. Åpne en PowerShell-instans med administratorrettigheter.
  8. Sørg