PowerShell ExecutionPolicy forklart
Bla gjennom innleggsemner
- Hva er PowerShell ExecutionPolicy?
- Tilgjengelige utførelsespolicyer
- Utførelsespolicy Omfang og forrang
- Hvordan få gjeldende PowerShell Execution Policy
- Slik setter du PowerShell ExecutionPolicy
- Konklusjon
- Andre nyttige guider
- Ytterligere ressurser og referanser
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:
|_+_|
For å se ExecutionPolicy satt for alle Scopes, bruk denne kommandoen:
|_+_|
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.
Kommandoen mislyktes fordi jeg ikke åpnet PowerShell som administrator.Her er kommandoen utført som administrator:
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


