Kun yrität suorittaa PowerShell-skriptin, jota ei ole allekirjoitettu luotettavalla julkaisijalla, saatat saada seuraavan tietoturvavirheen:
”script.ps1 :File path\script.ps1 cannot be loaded. Tiedostoa path\script.ps1 ei ole digitaalisesti allekirjoitettu. Tätä komentosarjaa ei voi suorittaa nykyisessä järjestelmässä.”
Tämä tietoturvavirhe voi ilmetä, kun PowerShellin suorituskäytännöksi on asetettu Allsigned tai Remotesigned ja komentosarjaa ei ole allekirjoitettu.
Allsigned-toteutuskäytäntö sallii kaikkien allekirjoitettujen Powershell-komentosarjojen suorittamisen. Ennen komentosarjan suorittamista sinua pyydetään vahvistamaan, että luotat komentosarjan allekirjoittaneeseen julkaisijaan.
Kaukosuorituskäytäntö rajoittaa sellaisten ladattujen komentosarjojen suorittamista, joita ei ole allekirjoitettu. Paikallisesta tietokoneesta suoritettavia komentosarjoja ei tarvitse allekirjoittaa.
Ratkaisu
Tämän virheen voittamiseen on erilaisia menetelmiä. Voit joko allekirjoittaa PowerShell-skriptin, muuttaa suorituskäytäntöä, ohittaa käytännön tai poistaa tiedoston eston, jotta se voidaan suorittaa kerran kyseisessä istunnossa.
Tarkista suorituskäytäntö
Tarkista ensin suorituskäytäntösi käyttämällä komentoa Get-ExecutionPolicy
PS C:\> Get-ExecutionPolicyAllSigned
Get-ExecutionPolicy-komentokomennon listaparametri kertoo suorituskäytännön kullekin toimialueelle.
PS C:\> Get-ExecutionPolicy -list Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser Undefined LocalMachine RemoteSigned
Kaikkien Windows-versioiden oletusarvoinen suorituskäytäntö Windows 2012 R2:ta lukuun ottamatta on Restricted. Windows 2012 R2:n oletussuorituskäytäntö on RemoteSigned.
Suorituskäytännön muuttaminen pysyvästi
Helpoisin mutta epävarma tapa päästä eroon tästä virheilmoituksesta on muuttaa ExecutionPolicy-käytäntöä SetExecutionPolicy-cmdletillä. Seuraava komento asettaa ExecutionPolicyn arvoksi unrestricted.
PS C:\> Set-ExecutionPolicy unrestricted
Vahvista muutos kehotettaessa painamalla Y. Käytäntömuutos päivitetään rekisteriin, ja se pysyy voimassa, kunnes muutat sitä uudelleen.
Toteutuskäytännön muuttaminen tilapäisesti
Toteutuskäytännön pysyvän muuttamisen sijasta voit asettaa erilaisen käytännön yksittäiselle PowerShell-istunnolle. Tämä tehdään käyttämällä powershell.exe:n ExecutionPolicy-parametria
Avaa komentorivi tai PowerShell ja suorita komento:
C:\> powershell.exe -executionpolicy -bypass
Yllä olevalla komennolla avataan PowerShell-istunto, jonka suorituspolitiikaksi on asetettu Bypass, mikä tarkoittaa, että mitään ei estetä.
Ladatun tiedoston eston poistaminen
Kun suorituskäytäntönä on RemoteSigned, Internetistä (tai sähköposteista) ladatut tiedostot estetään suojaamaan vaarallisten skriptien suorittamista. Jos luotat siihen, että komentosarjan sisältö on turvallinen, voit poistaa sen eston, jotta se voidaan suorittaa istunnossa Unblock-File-sentrolilla
PS C:\> Unblock-File -Path C:\Downloads\script1.ps1
Kun olet muuttanut istunnon tai tietyn komentosarjan suorituskäytäntöä pysyvästi tai tilapäisesti, voit jatkaa komentosarjan suorittamista, mutta ennen kuin teet sen, varmista, että komentosarjan sisältö ei vahingoita tietokonettasi
.