Öruggasta leiðin til að laga “Execution Policy Restricted” villu í Windows PowerShell er ekki að afrita víðtækasta skipunina sem þú finnur. Fyrst skaltu greina hvaða execution policy er í raun virk, og velja síðan þrengstu breytinguna sem hentar því sem þú ert að reyna að keyra.
Núverandi skjöl Microsoft leggja einnig áherslu á mikilvægi útgáfu samhengis. Skjöl Windows PowerShell 5.1 lista Restricted sem sjálfgefna execution policy fyrir Windows viðskiptavini. Núverandi skjöl PowerShell 7.6 skilgreina Default sem RemoteSigned á Windows. Ef hvert umfang er Undefined, þó, skráir Microsoft enn virka fallback á Windows viðskiptavini sem Restricted. Hagnýta kennslan er einföld: ekki giska á stefnu þína út frá Windows útgáfu eða frá leiðbeiningum. Keyrðu policy skipanirnar á vélinni sem hefur villuna.
Þessi leiðbeining ber saman helstu lagfæringar eftir umfangi, varanleika, áhrifum á stjórnun og traustlíkani. Markmiðið er að fá löglega skrift til að keyra án þess að veika meira af kerfinu en nauðsyn krefur.
Hvað þýðir Restricted villan í raun
Undir Restricted stefnunni leyfir PowerShell einstakar skipanir en leyfir ekki keyrslu skriftaskráa. Það inniheldur PowerShell skriftir og tengdar stillinga- eða module-skriftaskrár. Microsoft lýsir execution policy sem öryggiseiginleika sem stjórnar skilyrðum undir hvaða skriftir og stillingaskrár hlaðast. Það er ekki öryggislandamörk; Microsoft tekur sérstaklega fram að notandi getur samt slegið inn skipanir gagnvirkt. Lestu núverandi about_Execution_Policies skjöl fyrir PowerShell 7.6 og Windows PowerShell 5.1 execution policy skjöl.
Algenga villan segir að .ps1 skráin geti ekki verið hlaðin vegna þess að keyrsla skrifta er óvirk; taktu nákvæmlega eftir skilaboðunum áður en þú breytir stefnunni.
Þessi greinarmunur skiptir máli. Execution policy getur hjálpað til við að koma í veg fyrir óviljaða keyrslu skrifta, en að stilla RemoteSigned eða Bypass gerir skriftina ekki áreiðanlega. Farðu yfir skriftina og uppruna hennar fyrst.
Skref 1: Greindu virku stefnuna og hvert umfang
Keyrðu þessar tvær skipanir:
Get-ExecutionPolicy
Get-ExecutionPolicy -List
Fyrsta skilar virkri stefnu fyrir núverandi setu. Önnur listar stefnur sem eru beittar á MachinePolicy, UserPolicy, Process, CurrentUser og LocalMachine. Microsoft mælir sérstaklega með Get-ExecutionPolicy -List til að sjá stefnur sem geta haft áhrif á setuna. Sjá Get-ExecutionPolicy.
Athugaðu öll umföng í stað þess að gera ráð fyrir að LocalMachine gildið sé það sem stjórnar setunni.
Ef MachinePolicy eða UserPolicy er skilgreint, stoppaðu áður en þú reynir að þvinga fram staðbundna lausn. Þessi gildi koma frá Group Policy og geta yfirtekið execution policy stillingar sem gerðar eru með PowerShell. Á stýrðri vinnutölvu er rétta næsta skrefið yfirleitt að fylgja ferli stofnunarinnar eða hafa samband við IT-deildina.
Veldu lagfæringu eftir þörfum, ekki eftir stystu skipuninni
| Valkostur | Varanleiki | Stjórnunarheimildir | Megin viðskipti | Besta passa |
Unblock-File meðan RemoteSigned er notað | Skráartengt | Yfirleitt engin uppfærsla fyrir þína eigin skrá | Þú treystir sérstaklega einni niðurhalaðri skrá; aðrar niðurhalaðar óundirritaðar skrár falla enn undir RemoteSigned | Ein yfirfarin skrift niðurhöluð af internetinu |
Process RemoteSigned | Núverandi PowerShell ferli eingöngu | Engin LocalMachine breyting | Lágur varanleiki, en niðurhalaðar óundirritaðar skrár geta enn þurft að vera opnaðar | Tímabundin þróunar- eða villuleitarseta |
CurrentUser RemoteSigned | Varanlegt fyrir notandaþinn | Krefst ekki breytinga á öllum notendum | Þægilegt fyrir reglulega staðbundna skriftun; víðara en einnar setu breyting | Personuleg þróunarvinnustöð |
LocalMachine RemoteSigned | Varanlegt fyrir alla notendur | Krefst uppfærslu | Meiri áhrif yfir tölvuna | Deilt vélar þar sem stjórnandi vill meðvitað sömu stefnu fyrir alla notendur |
AllSigned | Háð umfangi | Háð umfangi | Krefst undirritunar jafnvel fyrir staðbundið búna skriftir; bætir við vottorðs- og undirritunarferli | Stofnanir með kóðaundirritunarferli |
Bypass | Háð umfangi; oft notað á Process umfangi | Háð umfangi | Engin skriftablokkun, viðvaranir eða spurningar frá execution policy | Stýrð sjálfvirkni með sínu eigin traust- og öryggislíkani, ekki afslappað varanlegt stilling |
Skref 2: Notaðu stjórnunarheimildir aðeins fyrir vélarvíða breytingu
Þú þarft ekki að opna uppfærða PowerShell eingöngu til að breyta CurrentUser eða Process umfanginu. Microsoft segir að uppfærsla sé nauðsynleg þegar breytt er stefnunni fyrir staðbundna tölvu, þ.e. LocalMachine. Þetta er gagnlegt viðskipti: ef aðeins notandaþinn þarf staðbundna skriftun, þá bætir breyting á stefnu allra notenda við umfang án þess að bæta við ávinningi.
Run as administrator er viðeigandi fyrir meðvitaða LocalMachine breytingu, en er óþarfi fyrir Process eða CurrentUser umfang.
Tillaga eftir þörfum: notaðu CurrentUser fyrir þróunaraðgang sem keyrir reglulega staðbundið búna skriftir. Geymdu LocalMachine fyrir stjórnanda sem vill meðvitað að sama stilling hafi áhrif á alla notendur.
Skref 3: Fyrir reglulega staðbundna skriftun, íhugaðu CurrentUser RemoteSigned
Fyrir margar persónulegar þróunartölvur er praktísk varanleg valkostur:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
RemoteSigned leyfir staðbundnum skriftum að keyra án þess að krefjast undirritunar, en skriftir sem merktar eru sem niðurhalaðar af internetinu krefjast áreiðanlegrar stafrænnar undirritunar nema þú opnar skrána sérstaklega. Það varðveitir gagnlegan greinarmun á kóða sem þú bjóst til staðbundið og kóða sem fenginn er frá öðrum uppruna.
Þessi mynd sýnir vélarvíða RemoteSigned skipun vegna þess að umfangið er sleppt; LocalMachine er sjálfgefið umfang. Kæstu frekar sérstakt umfang svo áhrifin séu meðvituð.
Algeng villa er að keyra Set-ExecutionPolicy RemoteSigned án -Scope. Microsoft skráir LocalMachine sem sjálfgefið umfang þegar execution policy er stillt. Þess vegna er betra að vera sérstakur:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Breytingin er virk strax; PowerShell þarf ekki að vera endurræst fyrir CurrentUser eða LocalMachine breytingar.
Skref 4: Fyrir tímabundna setu, kæstu frekar Process umfangs stefnu
Ef þú ert að leita að villum eða keyrir áreiðanlega staðbundna skrift einu sinni, forðastu varanlega notanda- eða vélarbreytingu. Þrengri valkostur er:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
Process umfangið gildir aðeins fyrir núverandi PowerShell setu. Microsoft segir að það sé geymt í $Env:PSExecutionPolicyPreference umhverfisbreytunni og eyðist þegar ferlið lokar.
Ef stærra forrit, uppsetningarforrit eða stýrt sjálfvirkni umhverfi hefur nú þegar sitt eigið öryggislíkan, þá býður PowerShell einnig upp á Bypass:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Process umfangs Bypass hverfur þegar PowerShell ferlið lokar, en það fjarlægir einnig execution policy viðvaranir og blokkun fyrir þá setu.
Viðskipti: Process umfang lágmarkar varanleika, en Bypass er víðara en RemoteSigned inni í þeirri setu. Microsoft lýsir Bypass sem því að blokkera ekkert og sýna engar viðvaranir eða spurningar, og segir að það sé ætlað fyrir aðstæður þar sem annað forrit veitir öryggislíkanið. Fyrir venjulega gagnvirka villuleitarsetu, notaðu Process RemoteSigned fyrst nema þú hafir sérstaka ástæðu fyrir Bypass.
Fyrir sérstakt einhliða Windows PowerShell ferli, geturðu einnig ræst:
powershell.exe -ExecutionPolicy RemoteSigned -File .\script.ps1
Fyrir PowerShell 7 er keyrsluskráin pwsh.exe. Skipanalín execution policy stilling yfirtekur samt ekki execution policy sem er framfylgt af Group Policy.
Skref 5: Ef RemoteSigned blokkar niðurhalaða skrift, opnaðu aðeins þá skrá
RemoteSigned meðhöndlar skrár sem merktar eru sem upprunnar af internetinu öðruvísi. Microsoft skráir Unblock-File cmdlet sem að fjarlægja internet-merkið, sem leyfir yfirfarinni óundirritaðri skrift að keyra undir RemoteSigned.
Fyrst skaltu skoða skriftina. Ef þú treystir upprunanum og hefur yfirfarið innihaldið, keyrðu:
Unblock-File -Path .\script.ps1
Þú getur einnig notað Unblock gátreitinn í Eiginleikar (Properties) glugga skráarinnar. Microsoft segir að Unblock-File framkvæmi sömu grunnvirkni. Sjá Unblock-File.
Að opna eina yfirfarða niðurhalaða skrift er þrengri en að veika stefnuna fyrir hverja skrift á vélinni.
Þú getur athugað hvort skrá hafi Zone.Identifier aukagagnstraum með:
Get-Item .\script.ps1 -Stream Zone.Identifier -ErrorAction SilentlyContinue
Microsoft tekur fram að niðurhalsaðferðir merkja ekki allar skrár á sama hátt, svo fjarvera þess straums er ekki sönnun þess að skriftin sé örugg.
Skref 6: Notaðu AllSigned þegar stofnunin hefur undirritunarferli
AllSigned krefst þess að allar skriftir og stillingaskrár séu undirritaðar af áreiðanlegum útgefanda, þar með talið skriftir sem eru búnaðar staðbundið. Það gefur stofnun samræmt útgefanda-traust ferli, en það skapar einnig rekstrarlega byrði: skriftir þurfa Authenticode undirritanir og notendur þurfa að treysta viðkomandi útgefendum.
Skjöl Microsoft about_Signing skjöl útskýra hvernig PowerShell athugar skriftaundirritanir og hvernig spurningar um áreiðanlega útgefanda virka.
Tillaga eftir þörfum: AllSigned er skynsamlegt þegar stofnunin þín hefur nú þegar kóðaundirritunarvottorð, útgáfustjórnun og ferli fyrir uppfærslu undirritaðra skrifta. Fyrir einn þróunaraðila sem skrifar staðbundnar hjálpar skriftir, felur RemoteSigned yfirleitt minni núning í sér en varðveitir samt internet-uppruna athugunina.
Skref 7: Ekki berjast við Group Policy á stýrðri tölvu
PowerShell birtir tvö stefnu umföng sem koma frá Group Policy: MachinePolicy og UserPolicy. Skjöl Microsoft Group Policy segja að Turn on Script Execution stillingin geti framfylgt Restricted, RemoteSigned eða AllSigned hegðun fyrir stýrða notendur og tölvur. Stillingin er undir:
Administrative Templates\Windows Components\Windows PowerShell
Sjá about_Group_Policy_Settings.
Ef Get-ExecutionPolicy -List sýnir skilgreint MachinePolicy eða UserPolicy, þá gæti staðbundin Set-ExecutionPolicy skipun ekki gefið þér þá virku hegðun sem þú búist við. Hagnýta lausnin er að biðja um viðeigandi stefnu hjá stjórnandanum, nota undirritaða skrift ef krafist er, eða nota samþykktan útfærsluaðferð.
Skref 8: Endurheimtu stillinguna sem þú breyttir í raun, og staðfestu
Áður en þú breytir varanlegu umfangi, skráðu núverandi gildi þess:
Get-ExecutionPolicy -Scope CurrentUser
Get-ExecutionPolicy -Scope LocalMachine
Ef þú þarft síðar að fjarlægja stefnugildi sem þú settir, skráir Microsoft að stilla það umfang á Undefined:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Undefined
Ekki keyra blindlega Set-ExecutionPolicy Restricted bara vegna þess að skjámynd sýnir það. Án umfangs, miðar skipunin á LocalMachine sjálfgefið, og “Restricted” gæti ekki hafa verið fyrra gildi þess umfangs.
Skjámyndin sýnir Restricted breytingu, en raunveruleg afturköllun ætti að endurheimta umfangið og gildið sem þú skráðir í stað þess að giska á fyrri stillingu.
Að lokum, staðfestu bæði virku stefnuna og skriftina:
Get-ExecutionPolicy
Get-ExecutionPolicy -List
.\script.ps1
Góð keyrsla skriftar staðfestir að augnabliks einkennið er leyst; athugaðu stefnulistann aftur til að staðfesta að þú hafir ekki skilið eftir víðara umfang breytt ómeðvitað.
Hvaða lagfæringu ættir þú að velja?
| Staða þín | Mælt með upphafspunktur | Af hverju |
| Þú niðurhalaðir eina skrift frá uppruna sem þú treystir | Haltu RemoteSigned og notaðu Unblock-File eftir yfirferð | Breytir trausti fyrir eina skrá í stað allra skrifta |
| Þú þarft skriftir aðeins í núverandi villuleitarsetu | Process RemoteSigned | Lokar með setunni og heldur internet-uppruna takmörkunum |
| Þú skrifar og keyrir reglulega þínar eigin skriftir | CurrentUser RemoteSigned | Varanlegur þægindi fyrir einn notanda án þess að hafa áhrif á alla á tölvunni |
| Þú stjórnar deildri vinnustöð | Meta LocalMachine RemoteSigned eða stofnun stefnu | Samræmd hegðun fyrir alla notendur, en meiri áhrif |
| Fyrirtækið þitt krefst útgefanda-stýrðra skrifta | AllSigned í gegnum undirritunar- og stefnuferli stofnunarinnar | Samræmd undirritunarkrafa á kostnað undirritunarbyrði |
| Uppsetningarforrit eða stýrt sjálfvirkni kerfi hefur sitt eigið öryggislíkan | Íhugaðu process-umfang Bypass | Hannað fyrir stýrðar hýsingar aðstæður; forðastu að gera það afslappað varanlegt sjálfgefið |
| MachinePolicy eða UserPolicy er skilgreint | Fylgdu IT eða Group Policy | Staðbundnar umfangsbreytingar eru ekki rétt heimild |
Algengar villur sem skapa stærra vandamál en upprunalega villan
- Að stilla Unrestricted eða Bypass varanlega bara til að fá eina skrift til að keyra. Þetta víkkar hvað getur keyrt þegar þrengri Process, CurrentUser eða skráartengd breyting gæti leyst vandamálið.
- Að keyra hverja skipun sem Administrator. CurrentUser og Process breytingar þurfa ekki LocalMachine stefnubreytingu.
- Að hunsa Group Policy. Ef tækið er stýrt, gæti stefnan verið meðvituð og staðbundin breyting á öðru umfangi kemur ekki í stað stofnunarstjórnunar.
- Að opna skrift án þess að lesa hana. Unblock-File fjarlægir internet-uppruna blokkunina; það staðfestir ekki kóðann.
- Að gera ráð fyrir að undirrituð skrift sé sjálfkrafa skaðlaus. Microsoft tekur fram að undirritaður kóði getur samt verið illgjarn; undirritanir staðfesta útgefanda og heilleikaupplýsingar, ekki tryggingu fyrir öruggri hegðun.
- Að gleyma hvaða umfangi þú breyttir. Skipun án
-Scope getur haft áhrif á LocalMachine, en Process breyting hverfur við útgöngu.
Í stuttu máli
Fyrir flesta persónulega Windows skriftun, er CurrentUser RemoteSigned sanngjörn varanleg valkostur þegar þú keyrir reglulega staðbundið búna skriftir, en Unblock-File er þrengri valkostur fyrir eina yfirfarða skrift niðurhalaða af internetinu. Fyrir tímabundna villuleitarsetu, lágmarkar Process RemoteSigned varanleika. Bypass hefur lögmætt hlutverk í stýrðri sjálfvirkni, en viðskipti þess er að execution policy blokkun og viðvaranir eru fjarlægðar fyrir það ferli. Á stýrðum tölvum, ætti Group Policy að vera treated sem heimild frekar en hindrun til að komast framhjá.
Besta lagfæringin er því ekki ein stefna fyrir alla. Hún er minnsta umfangið og minnst leyfilega hegðunin sem styður samt áreiðanlegu skriftina sem þú þarft að keyra.