PowerShell ExecutionPolicy forklart

15. september 2020 2424 Visninger powershell utførelsespolicy

Bla gjennom innleggsemner





Hva er PowerShell ExecutionPolicy?

ExecutionPolicy i PowerShell er en sikkerhetsfunksjon som kontrollerer hvordan PowerShell laster inn konfigurasjonsfiler og kjører skript. ExecutionPolicy-funksjoner bidrar til å forhindre at PowerShell kjører ondsinnede skript.



Du kan angi utførelsespolicy for en datamaskin, en bruker eller en økt. De Set-ExecutionPolicy cmdlet kan brukes til å angi ExecutionPolicy. PowerShell.exe-kommandoen har også en ExecutionPolicy-parameter som du kan bruke til å angi Powershell ExecutionPolicy.

I denne veiledningen vil du lære om de forskjellige typene PowerShell-utførelsespolicyer. Du vil også lære hvordan du bruker kommandoene Set-ExecutionPolicy og PowerShell.exe -ExecutionPolicy.



Windows Update-status som venter på installasjon

Tilgjengelige utførelsespolicyer

Denne delen forklarer de forskjellige ExecutionPolicy du kan angi i PowerShell og hva hver av dem lar deg gjøre.



Begrenset

  • Dette er standard utførelsespolicy i Windows 8, Server 2012 og nyere.
  • Hindrer PowerShell-konfigurasjonsfiler (.ps1xml), modulskriptfiler (.psm1) og Windows PowerShell-profiler (.ps1) fra å kjøres
  • Tillater individuelle PowerShell-kommandoer, men nekter skript

Allsignert

Når du angir AllSigned ExecutionPolicy, PowerShell:

  • Kjører alle skript
  • Krever at før et skript tillates å kjøre, må det være signert av en pålitelig utgiver. Dette inkluderer skript skrevet på den lokale datamaskinen
  • Forespørsler om å bekrefte før du kjører et skript fra en utgiver du ikke har bekreftet er klarert
  • Kan kjøre signerte, men ondsinnede koder

Fjernsignert

Remote Signed Execution Policy:



  • Lar skript kjøres
  • Krever at alle skript som lastes ned fra Internett, må signeres digitalt av en utgiver du har spesifisert som klarert. Dette inkluderer skript mottatt via e-post og direktemeldingsplattformer.
  • Vil ikke kreve digital signering av skript skrevet på en lokal datamaskin
  • Kan tillate kjøring av skadelige skript fra andre kilder

Ubegrenset

  • Lar ikke-tilordnede skript kjøres
  • Vil advare deg før du kjører et skript fra internett
  • Risikerer å kjøre ondsinnede koder eller skript

Bypass

Med Bypass Execution Policy:



  • Ingen skript er blokkert. Tilbyr ikke advarsler også.

Udefinert

  • Betyr at ingen ExecutionPolicy er definert
  • Den effektive ExecutionPolicy er begrenset (standard)

Utførelsespolicy Omfang og forrang

Du kan bruke PowerShell Execution Policy på:

LocalMcachine : Påvirker kun de nåværende brukerne. Dette har minst forrang

Nåværende bruker : Utførelsespolicyen påvirker bare gjeldende bruker. Går foran LocalMcachine men har lavere forrang over Prosess .

Prosess : Gjelder kun gjeldende økt. Har høyeste prioritet.

Hvordan få gjeldende PowerShell Execution Policy

For å se gjeldende PowerShell ExecutionPolicy, kjør kommandoen nedenfor:

|_+_| Hvordan angi utførelsespolicy med Set-ExecutionPolicy

For å se ExecutionPolicy satt for alle Scopes, bruk denne kommandoen:

|_+_| Hvordan angi utførelsespolicy med Set-ExecutionPolicy

Du kan også få utførelsespolicy basert på omfang. Her er noen eksempler på kommandoer:

|_+_|

Slik setter du PowerShell ExecutionPolicy

Som jeg nevnte i introduksjonen, kan du angi ExecutionPolicy med Set-ExecutionPolicy cmdleten. Du kan også bruke kommandoen PowerShell.exe -ExecutionPolicy.

Hvordan angi utførelsespolicy med Set-ExecutionPolicy

Syntaksen til Set-ExecutionPolicy cmdleten er:

|_+_|

Som et eksempel, for å sette utførelsespolicyen til Fjernsignert bruk kommandoen nedenfor:

nedlasting av Microsoft spartansk nettleser
|_+_|

Her er resultatet av kommandoen.

Hvordan angi utførelsespolicy med Set-ExecutionPolicyKommandoen mislyktes fordi jeg ikke åpnet PowerShell som administrator.

Her er kommandoen utført som administrator:

Hvordan angi utførelsespolicy med PowerShell.exe -ExecutionPolicy

Som du kan se av bildet, er den nye utførelsespolicyen nå Fjernsignert .

Fra de 2 siste kommandoene ble jeg bedt om å bekrefte kommandoen. For å omgå denne forespørselen, ta med -Makt parameter.

Kommandoen kjøres nå uten å spørre om bekreftelse.

De -Makt parameter er spesielt nyttig i skripting. Uten denne parameteren kan skriptet ditt stoppe.

Som standard setter denne kommandoen utførelsespolicy for LocalMachine omfang. For å bekrefte dette, kjør kommandoen nedenfor:

|_+_|

For å angi utførelsespolicy til å gjelde for et annet omfang, bruk – omfang parameter.

Kommandoen nedenfor setter utførelsespolicy for Nåværende bruker :

|_+_|

Som du kan se av resultatet, Nåværende bruker politikk er ikke lenger Udefinert . Det er nå Bypass , policyen satt med den siste kommandoen.

Hvordan sette ExecutionPolicy med PowerShell.exe -ExecutionPolicy

Hvis du vil omgå utførelsespolicy for den påloggede økten, kan du angi utførelsespolicy for gjeldende kommandolinje. Dette oppnås ved å bruke PowerShell.exe-kommandoen.

Før jeg gir eksempler, her er gjeldende utførelsespolicy:

Gjeldende utførelsespolicy er Begrenset . Dette er fordi Prosess omfang har forrang. For å bekrefte, se resultatet nedenfor:

minecraft bruker cpu i stedet for gpu

Hvis du husker, Begrenset policy vil IKKE tillate skript å kjøre.

Dette betyr at hvis jeg prøver å kjøre et skript, vil jeg bli nektet tilgang. Bildet nedenfor viser en rekke kommandoer og resultatene deres. Se min forklaring under bildet.

Den første kommandoen som vises på bildet er:

|_+_|

Jeg prøvde å kjøre et PowerShell-skript. Da fikk jeg feilmeldingen nedenfor:

Fil C:PSschedule powershell-eksempelCreate-folders-from-text-file.ps1 kan ikke lastes inn fordi kjørende skript er deaktivert på dette systemet.

Årsaken er fordi gjeldende utførelsespolicy er Begrenset . Den tillater ingen skript å kjøre.

Tilbake til referansebildet. I neste linje kjørte jeg følgende kommando:

|_+_|

Effektivt kan jeg angi en midlertidig utførelsespolicy for kommandolinjen ved å bruke parameteren -ExecutionPolicy til kommandoen thepowershell.exe. Men jeg fikk samme feilmelding. Årsaken er at jeg må angi utførelsespolicyen før jeg kaller skriptet.

Så i neste linje utførte jeg denne kommandoen:

|_+_|

Dette setter utførelsespolicyen for den gjeldende påloggede økten til Ubegrenset . Så når jeg nå kjører PowerShell-skriptet mitt, ble det utført vellykket! Se referansebildet ovenfor.

Uttaket fra den siste analysen er dette: Du kan angi Powershell ExecutionPolicy for gjeldende økt ved å bruke Powershell.exe -ExecutionPolicy. Men du må kjøre kommandoen først før du kaller skriptet ditt.

For å bekrefte at Powershell.exe bare setter policy for gjeldende økt, kjører jeg kommandoen nedenfor fra gjeldende økt:

|_+_|

Resultatet er Ubegrenset for Nåværende bruker omfang. Hvis jeg logger av min nåværende økt og logger på igjen. Den vil gå tilbake til policyen satt av Set-ExecutionPolicy-kommandoen.

Konklusjon

Jeg håper jeg har vært i stand til å forenkle hvordan jeg får og stiller inn PowerShell Execution Policies. Hvis du har spørsmål eller kommentarer, bruk Legg igjen et svar-skjemaet på slutten av siden.

Andre nyttige guider

  • PowerShell Not Equal Operator: applikasjoner, eksempler
  • Powershell For Loop Forklart: Syntaks og eksempler

Ytterligere ressurser og referanser