Dela via


Kapitel 1 – Komma igång med PowerShell

Det här kapitlet fokuserar på att hitta och starta PowerShell och lösa de initiala smärtpunkter som nya användare upplever med PowerShell. Följ med och gå igenom exemplen i det här kapitlet på din labbmiljödator.

Vad är PowerShell?

Windows PowerShell är en lätthanterad kommandoradsgränssnitts- och skriptmiljö för att automatisera administrativa uppgifter i Windows-baserade system. Windows PowerShell är förinstallerat på alla moderna versioner av Windows-operativsystemet.

Var du hittar PowerShell

Det enklaste sättet att hitta PowerShell på Windows 11 är att skriva PowerShell in i sökfältet, enligt bild 1–1. Observera att det finns fyra olika genvägar för Windows PowerShell.

Bild 1–1 – Sök efter PowerShell.

Windows PowerShell-genvägar i en 64-bitarsversion av Windows:

  • Windows PowerShell
  • Windows PowerShell ISE
  • Windows PowerShell (x86)
  • Windows PowerShell ISE (x86)

I en 64-bitarsversion av Windows har du en 64-bitarsversion av Windows PowerShell-konsolen och Windows PowerShell Integrated Scripting Environment (ISE) och en 32-bitarsversion av var och en, vilket anges av suffixet (x86) på genvägarna.

Kommentar

Windows 11 levereras endast som ett 64-bitars operativsystem. Det finns ingen 32-bitarsversion av Windows 11. Windows 11 innehåller dock 32-bitarsversioner av Windows PowerShell och Windows PowerShell ISE.

Du har bara två genvägar om du kör en äldre 32-bitarsversion av Windows. Dessa genvägar har inte suffixet (x86) men är 32-bitarsversioner.

Jag rekommenderar att du använder 64-bitarsversionen av Windows PowerShell om du kör ett 64-bitars operativsystem om du inte har en specifik anledning till att använda 32-bitarsversionen.

Beroende på vilken version av Windows 11 du kör kan Windows PowerShell öppnas i Windows-terminalen.

Microsoft uppdaterar inte längre PowerShell ISE. ISE fungerar bara med Windows PowerShell 5.1. Visual Studio Code (VS Code) med PowerShell-tillägget fungerar med båda versionerna av PowerShell. VS Code och PowerShell-tillägget levereras inte i Windows. Installera VS Code och tillägget på datorn där du skapar PowerShell-skript. Du behöver inte installera dem på alla datorer där du kör PowerShell.

Så här startar du PowerShell

Jag använder tre olika Active Directory-användarkonton i de produktionsmiljöer som jag stöder. Jag speglade de kontona i labbmiljön som användes i den här boken. Jag loggar in på min Windows 11-dator som domänanvändare utan domän- eller lokal administratörsbehörighet.

Starta PowerShell-konsolen genom att klicka på Windows PowerShell-genvägen , enligt bild 1–1. Observera att namnlisten i konsolen säger Windows PowerShell, som visas i bild 1-2.

Bild 1–2 – Namnlist i PowerShell-fönstret.

Vissa kommandon fungerar bra när du kör PowerShell som en vanlig användare. PowerShell deltar dock inte i UAC (User Access Control). Det innebär att det inte går att fråga efter utökade behörigheter för uppgifter som kräver godkännande av en administratör.

Kommentar

UAC är en Windows-säkerhetsfunktion som hjälper till att förhindra att skadlig kod körs med förhöjd behörighet.

När du är inloggad som en vanlig användare returnerar PowerShell ett fel när du kör ett kommando som kräver utökade privilegier. Du kan till exempel stoppa en Windows-tjänst:

Stop-Service -Name W32Time
Stop-Service : Service 'Windows Time (W32Time)' cannot be stopped due to
the following error: Cannot open W32Time service on computer '.'.
At line:1 char:1
+ Stop-Service -Name W32Time
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (System.ServiceProcess.ServiceCon
   troller:ServiceController) [Stop-Service], ServiceCommandException
    + FullyQualifiedErrorId : CouldNotStopService,Microsoft.PowerShell.Comm
   ands.StopServiceCommand

Lösningen är att köra PowerShell upphöjd som en användare som är lokal administratör. Det var så jag konfigurerade mitt andra domänanvändarkonto. Enligt principen om minsta behörighet bör det här kontot inte vara domänadministratör eller ha utökade privilegier i domänen.

Om du vill starta PowerShell med utökade rättigheter högerklickar du på Genvägen till Windows PowerShell och väljer Kör som administratör, enligt bild 1–3.

Bild 1–3 – Snabbmeny – Kör som administratör.

Windows frågar efter autentiseringsuppgifter eftersom du loggade in på Windows som en vanlig användare. Ange autentiseringsuppgifterna för domänanvändaren som är lokal administratör, enligt bild 1–4.

Bild 1–4 – Användarkontokontroll – Ange autentiseringsuppgifter.

Observera att namnlisten i de upphöjda konsolfönstren säger Administratör: Windows PowerShell, enligt bild 1–5.

Bild 1–5 – Namnlisten i det upphöjda PowerShell-fönstret.

Nu när du kör PowerShell upphöjd som administratör är UAC inte längre ett problem när du kör ett kommando som kräver utökade privilegier.

Viktigt!

Du bör bara köra PowerShell upphöjd som administratör när det är absolut nödvändigt.

När du riktar in dig på fjärrdatorer behöver du inte köra PowerShell förhöjd. Att köra PowerShell förhöjd påverkar endast kommandon som körs mot din lokala dator.

Du kan förenkla sökning och start av PowerShell. Fäst genvägen för PowerShell eller Windows-terminalen i aktivitetsfältet. Sök efter PowerShell igen, förutom den här gången högerklickar du på det och väljer Fäst i aktivitetsfältet enligt bild 1–6.

Bild 1–6 – Snabbmeny – Fäst i aktivitetsfältet.

Viktigt!

Den ursprungliga versionen av den här boken, som publicerades 2017, rekommenderade att du fäster en genväg till aktivitetsfältet för att starta en upphöjd instans automatiskt varje gång du startar PowerShell. Men på grund av potentiella säkerhetsproblem rekommenderar jag det inte längre. Alla program som du startar från en upphöjd instans av PowerShell kringgår även UAC och kör förhöjd. Om du till exempel startar en webbläsare från en upphöjd instans av PowerShell, körs alla webbplatser som du besöker som innehåller skadlig kod också förhöjda.

När du behöver köra PowerShell med förhöjd behörighet högerklickar du på PowerShell-genvägen som fästs på aktivitetsfältet medan du trycker på Skift. Välj Kör som administratör enligt bild 1–7.

Bild 1–7 – Snabbmeny – Kör som administratör.

Fastställa din version av PowerShell

Det finns automatiska variabler i PowerShell som lagrar tillståndsinformation. En av dessa variabler är $PSVersionTable, som innehåller versionsinformation om din PowerShell-session.

$PSVersionTable
Name                           Value
----                           -----
PSVersion                      5.1.22621.2428
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.22621.2428
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Om du kör en version av Windows PowerShell som är äldre än 5.1 bör du uppdatera din version av Windows. Windows PowerShell 5.1 är förinstallerat på de versioner av Windows som stöds för närvarande.

PowerShell version 7 ersätter inte Windows PowerShell 5.1. den installeras sida vid sida med Windows PowerShell. Windows PowerShell version 5.1 och PowerShell version 7 är två olika produkter. Mer information om skillnaderna mellan Windows PowerShell version 5.1 och PowerShell version 7 finns i Migrera från Windows PowerShell 5.1 till PowerShell 7.

Dricks

PowerShell version 6, som tidigare kallades PowerShell Core, stöds inte längre.

Körningspolicy

PowerShell-körningsprincipen styr de villkor under vilka du kan köra PowerShell-skript. Körningsprincipen i PowerShell är en säkerhetsfunktion som är utformad för att förhindra oavsiktlig körning av skadliga skript. Det är dock inte en säkerhetsgräns eftersom det inte kan stoppa beslutsamma användare från att avsiktligt köra skript. En bestämd användare kan kringgå körningsprincipen i PowerShell.

Du kan ange en körningsprincip för den lokala datorn, den aktuella användaren eller en PowerShell-session. Du kan också ange körningsprinciper för användare och datorer med grupprincip.

I följande tabell visas standardkörningsprincipen för aktuella Windows-operativsystem.

Windows-operativsystemversion Standardkörningsprincip
Windows Server 2022 Fjärrsignerad
Windows Server 2019 Fjärrsignerad
Windows Server 2016 Fjärrsignerad
Windows 11 Begränsad
Windows 10 Begränsad

Oavsett körningsprincipinställningen kan du köra valfritt PowerShell-kommando interaktivt. Körningsprincipen påverkar endast kommandon som körs i ett skript. Använd cmdleten Get-ExecutionPolicy för att fastställa den aktuella körningsprincipinställningen.

Kontrollera körningsprincipinställningen på datorn.

Get-ExecutionPolicy
Restricted

Visa en lista över körningsprincipinställningar för alla omfång.

Get-ExecutionPolicy -List
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined

Alla Windows-klientoperativsystem har standardinställningen körningsprincip för Restricted. Du kan inte köra PowerShell-skript med hjälp av körningsprincipinställningen Restricted . Om du vill testa körningsprincipen sparar du följande kod som en .ps1 fil med namnet Get-TimeService.ps1.

Dricks

Ett PowerShell-skript är en klartextfil som innehåller de kommandon som du vill köra. PowerShell-skriptfiler använder filtillägget .ps1 . Om du vill skapa ett PowerShell-skript använder du en kodredigerare som Visual Studio Code (VS Code) eller någon textredigerare som Anteckningar.

När du kör följande kommando interaktivt slutförs det utan fel.

Get-Service -Name W32Time

PowerShell returnerar dock ett fel när du kör samma kommando från ett skript.

.\Get-TimeService.ps1
.\Get-TimeService.ps1 : File C:\tmp\Get-TimeService.ps1 cannot be loaded
because running scripts is disabled on this system. For more information,
see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Get-TimeService.ps1
+ ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

När du kör ett kommando i PowerShell som genererar ett fel läser du felmeddelandet innan du försöker köra kommandot igen. Observera att felmeddelandet anger varför kommandot misslyckades:

... skript som körs är inaktiverade i det här systemet.

Om du vill aktivera körning av skript ändrar du körningsprincipen med cmdleten Set-ExecutionPolicy . LocalMachine är standardomfånget när du inte anger parametern Omfång . Du måste köra PowerShell upphöjd som administratör för att ändra körningsprincipen för den lokala datorn. Om du inte signerar dina skript rekommenderar jag att du använder RemoteSigned körningsprincipen. RemoteSigned förhindrar att du kör nedladdade skript som inte är signerade av en betrodd utgivare.

Innan du ändrar körningsprincipen läser du artikeln about_Execution_Policies hjälp för att förstå säkerhetskonsekvenserna.

Ändra körningsprincipinställningen på datorn till RemoteSigned.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Om du har ändrat körningsprincipen visar PowerShell följande varning:

Execution Policy Change
The execution policy helps protect you from scripts that you do not trust.
Changing the execution policy might expose you to the security risks
described in the about_Execution_Policies help topic at
https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the
execution policy?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "N"):y

Om du inte kör PowerShell upphöjd som administratör returnerar PowerShell följande felmeddelande:

Set-ExecutionPolicy : Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWAR
E\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied. To
change the execution policy for the default (LocalMachine) scope, start
Windows PowerShell with the "Run as administrator" option. To change the
execution policy for the current user, run "Set-ExecutionPolicy -Scope
CurrentUser".
At line:1 char:1
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (:) [Set-ExecutionPolicy],
   UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.
   PowerShell.Commands.SetExecutionPolicyCommand

Det går också att ändra körningsprincipen för den aktuella användaren utan att du behöver köra PowerShell upphöjd som administratör. Det här steget är onödigt om du har angett körningsprincipen för den lokala datorn till RemoteSigned.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Med körningsprincipen inställd på RemoteSignedkörs skriptet Get-TimeService.ps1 .

.\Get-TimeService.ps1
Status   Name               DisplayName
------   ----               -----------
Running  W32Time            Windows Time

Sammanfattning

I det här kapitlet har du lärt dig var du hittar och hur du startar PowerShell. Du har också lärt dig hur du fastställer versionen av PowerShell och syftet med körningsprinciper.

Granskning

  1. Hur avgör du vilken PowerShell-version en dator kör?
  2. När ska du starta PowerShell förhöjt som administratör?
  3. Vad är standardkörningsprincipen på Windows-klientdatorer och vad hindrar den dig från att göra?
  4. Hur avgör du den aktuella principinställningen för PowerShell-körning?
  5. Hur ändrar du PowerShell-körningsprincipen?

Referenser

Mer information om de begrepp som beskrivs i det här kapitlet finns i följande PowerShell-hjälpartiklar.

Nästa steg

I nästa kapitel får du lära dig mer om det går att identifiera kommandon i PowerShell. Du får också lära dig hur du laddar ned PowerShells hjälpfiler så att du kan visa hjälpen i PowerShell-sessionen.