PowerShell zegt dat “uitvoering van scripts is uitgeschakeld op dit systeem.”

Ik probeer een cmd-bestand uit te voeren dat een PowerShell-script aanroept vanuit cmd.exe, maar ik krijg deze foutmelding:

Management_Install.ps1 kan niet worden geladen omdat de uitvoering van scripts op dit systeem is uitgeschakeld.

Ik heb dit commando uitgevoerd:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

Als ik Get-ExecutionPolicy vanuit PowerShell uitvoer, wordt Unrestricted geretourneerd.

PS C:\Users\Administrator\> Get-ExecutionPolicy
Unrestricted

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts> powershell .\Management_Install.ps1 1

WAARSCHUWING: x86 PowerShell uitvoeren…

Bestand C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1 kan niet worden geladen omdat de uitvoering van scripts op dit systeem is uitgeschakeld. Zie "get-help about_signing" voor meer details.

Op regel:1 teken:25

  • .\Management_Install.ps1 <<<< 1

    • CategoryInfo: NotSpecified: (:) [], PSSecurityException

    • FullyQualifiedErrorId: RuntimeException

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts> PAUZE

Druk op een willekeurige toets om door te gaan. . .


Het systeem is Windows Server 2008R2.

Wat doe ik verkeerd?


Antwoord 1, autoriteit 100%

Als u Windows Server 2008 R2 gebruikt, is er een x64 en x86 versie van PowerShell die beide hun uitvoeringsbeleid moeten hebben. Heb je het uitvoeringsbeleid op beide hosts ingesteld?

Als Beheerder kunt u het uitvoeringsbeleid instellen door dit in uw PowerShell-venster te typen:

Set-ExecutionPolicy RemoteSigned

Zie voor meer informatie De set- ExecutionPolicy-cmdlet.

Als u klaar bent, kunt u het beleid terugzetten naar de standaardwaarde met:

Set-ExecutionPolicy Restricted

Mogelijk ziet u een fout:

Access to the registry key
'HKEY_LOCAL_MACHINE\SOFTWARE\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".

Het kan dus nodig zijn om de opdracht als volgt uit te voeren (zoals te zien is in opmerkingen):

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Antwoord 2, autoriteit 31%

U kunt dit beleid voor een enkel bestand omzeilen door -ExecutionPolicy Bypass toe te voegen bij het uitvoeren van PowerShell

powershell -ExecutionPolicy Bypass -File script.ps1

Antwoord 3, autoriteit 9%

Ik had een soortgelijk probleem en merkte op dat de standaard cmd op Windows Server 2012 , draaide de x64-versie.

Voor Windows 10, Windows 7, Windows 8, Windows Server 2008 R2 of Windows Server 2012, voer de volgende opdrachten uit als Beheerder:

x86 (32 bit)
Open C:\Windows\SysWOW64\cmd.exe
Voer de opdracht uit powershell Set-ExecutionPolicy RemoteSigned

x64 (64 bit)
Open C:\Windows\system32\cmd.exe
Voer de opdracht uit powershell Set-ExecutionPolicy RemoteSigned

Je kunt de modus controleren met

  • In CMD: echo %PROCESSOR_ARCHITECTURE%
  • In Powershell: [Environment]::Is64BitProcess

Referenties:
MSDN – Windows PowerShell-uitvoeringsbeleid
Windows – 32bit vs 64bit directory-uitleg


Antwoord 4, autoriteit 6%

De meeste van de bestaande antwoorden leggen het Hoe uit, maar weinigen leggen het Waarom uit. En voordat u code van vreemden op internet uitvoert, met name code die beveiligingsmaatregelen uitschakelt, moet u precies weten wat u doet. Dus hier is wat meer informatie over dit probleem.

Van de TechNet Over het uitvoeringsbeleid:

Met het uitvoeringsbeleid van Windows PowerShell kunt u bepalen onder welke voorwaarden Windows PowerShell configuratiebestanden laadt en scripts uitvoert.

Waarvan de voordelen, zoals opgesomd door PowerShell Basics – Uitvoeringsbeleid en Code Signing zijn:

  • Controle van uitvoering – Beheer het vertrouwensniveau voor het uitvoeren van scripts.
  • Command Highjack – Voorkom injectie van commando’s op mijn pad.
  • Identiteit – Is het script gemaakt en ondertekend door een ontwikkelaar die ik vertrouw en/of ondertekend met een certificaat van een certificeringsinstantie die ik vertrouw.
  • Integriteit – Scripts kunnen niet worden gewijzigd door malware of een kwaadwillende gebruiker.

Als u uw huidige uitvoeringsbeleid wilt controleren, kunt u Get-ExecutionPolicy uitvoeren . Maar je bent hier waarschijnlijk omdat je het wilt veranderen.

Hiervoor voert u het Set-ExecutionPolicy cmdlet.

U moet twee belangrijke beslissingen nemen bij het bijwerken van het uitvoeringsbeleid.

Type uitvoeringsbeleid:

  • Restricted – Geen enkel lokaal, extern of gedownload script kan op het systeem worden uitgevoerd.
  • AllSigned – Alle scripts die worden uitgevoerd, moeten digitaal worden ondertekend.
  • RemoteSigned – Alle externe scripts (UNC) of gedownloade moeten worden ondertekend.
  • Unrestricted – Er is geen handtekening vereist voor welk type script dan ook.

Reikwijdte van nieuwe wijziging

  • LocalMachine – Het uitvoeringsbeleid is van invloed op alle gebruikers van de computer.
  • CurrentUser – Het uitvoeringsbeleid is alleen van invloed op de huidige gebruiker.
  • Process – Het uitvoeringsbeleid is alleen van invloed op het huidige Windows PowerShell-proces.

= Standaard

Bijvoorbeeld: als u het beleid wilt wijzigen in RemoteSigned voor alleen de CurrentUser, voert u de volgende opdracht uit:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Opmerking: om het uitvoeringsbeleid te wijzigen, moet u PowerShell als beheerder uitvoeren.
Als u in de normale modus bent en probeert het uitvoeringsbeleid te wijzigen, krijgt u de volgende foutmelding:

Toegang tot de registersleutel ‘HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell’ is geweigerd. Als u het uitvoeringsbeleid voor het standaardbereik (LocalMachine) wilt wijzigen, start u Windows PowerShell met de optie “Als administrator uitvoeren”.

Als u de interne beperkingen op uw eigen scripts die niet van internet zijn gedownload (of in ieder geval geen UNC-metadata bevatten), wilt aanscherpen, kunt u het beleid dwingen om alleen ondertekende sripts uit te voeren. Om uw eigen scripts te ondertekenen, kunt u de instructies volgen in het artikel van Scott Hanselman over PowerShell-scripts ondertekenen .

Opmerking: de meeste mensen krijgen deze foutmelding waarschijnlijk wanneer ze Powershell openen, omdat het eerste wat PS probeert te doen wanneer het wordt gestart, het uitvoeren van uw gebruikersprofielscript is dat uw omgeving instelt zoals u dat wilt .

Het bestand bevindt zich meestal in:

%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1

Je kunt de exacte locatie vinden door de powershell-variabele uit te voeren

$profile

Als er niets is dat u belangrijk vindt in het profiel en u niet wilt poepen met uw beveiligingsinstellingen, kunt u het gewoon verwijderen en powershell zal niets vinden dat het niet kan uitvoeren.


Antwoord 5, autoriteit 2%

In Windows 7:

Ga naar het menu Start en zoek naar “Windows PowerShell ISE”.

Klik met de rechtermuisknop op de x86-versie en kies “Als administrator uitvoeren”.

Plak in het bovenste gedeelte Set-ExecutionPolicy RemoteSigned; voer het script uit. Kies “Ja”.

Herhaal deze stappen ook voor de 64-bits versie van Powershell ISE (de niet-x86-versie).

Ik verduidelijk alleen de stappen waar @Chad Miller op gezinspeeld heeft. Bedankt Tsjaad!


Antwoord 6, autoriteit 2%

Ook dit commando uitvoeren voordat het script het probleem oplost:

set-executionpolicy unrestricted

Antwoord 7

Als u zich in een omgeving bevindt waar u geen beheerder bent, kunt u het uitvoeringsbeleid speciaal voor u instellen, zonder dat hiervoor een beheerder nodig is.

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

of

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Unrestricted"

Je kunt er alles over lezen in het Help-item.

Help Get-ExecutionPolicy -Full
Help Set-ExecutionPolicy -Full

Antwoord 8

RemoteSigned: alle scripts die u zelf hebt gemaakt, worden uitgevoerd en alle scripts die van internet zijn gedownload, moeten worden ondertekend door een vertrouwde uitgever.

OK, verander het beleid door simpelweg te typen:

Set-ExecutionPolicy RemoteSigned

Antwoord 9

We kunnen de status van het huidige ExecutionPolicy verkrijgen met de onderstaande opdracht:

Get-ExecutionPolicy;

Standaard is het Beperkt. Om de uitvoering van PowerShell-scripts mogelijk te maken, moeten we dit ExecutionPolicy instellen als Bypass of Unrestricted.

We kunnen het beleid voor Huidige gebruiker instellen als Bypass of Unrestricted door een van de onderstaande PowerShell-opdrachten te gebruiken:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;

Onbeperkt beleid laadt alle configuratiebestanden en voert alle scripts uit. Als u een niet-ondertekend script uitvoert dat van internet is gedownload, wordt u om toestemming gevraagd voordat het wordt uitgevoerd.

Terwijl in het beleid Bypass niets wordt geblokkeerd en er geen waarschuwingen of prompts zijn tijdens het uitvoeren van het script. Bypass ExecutionPolicy is meer ontspannen dan Unrestricted.


Antwoord 10

Ik gebruik Windows 10 en kon geen enkele opdracht uitvoeren. Het enige commando dat me wat aanwijzingen gaf was dit:

[x64]

  1. Open C:\Windows\SysWOW64\cmd.exe [als beheerder]
  2. Voer de opdracht uit> powershell Set-ExecutionPolicy Unrestricted

Maar dit werkte niet. Het was beperkt. Waarschijnlijk nieuw beveiligingsbeleid voor Windows10. Ik had deze fout:

Set-ExecutionPolicy: Windows PowerShell heeft uw uitvoeringsbeleid bijgewerkt, maar de instelling wordt overschreven door een beleid dat is gedefinieerd op een specifieker bereik. Vanwege de overschrijving behoudt uw shell zijn huidige effectieve uitvoeringsbeleid van…

Dus ik vond een andere manier (oplossing):

  1. Open opdracht/console uitvoeren (Win + R)
  2. Type: gpedit.msc (Groepsbeleid Editor)
  3. Blader naar Lokaal computerbeleid -> Computerconfiguratie -> Beheersjablonen -> Windows-componenten -> Windows Powershell.
  4. Schakel “Scriptuitvoering in” in
  5. Stel het beleid naar wens in. Ik heb de mijne ingesteld op “Alle scripts toestaan“.

Open nu PowerShell en geniet ervan 😉


Antwoord 11

  1. Open powershell als administratie
Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

gebruik deze opdracht


Antwoord 12

Win + R en typ de opdracht kopiëren en plakken en druk op OK:

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

En voer je script uit.

Vervolg wijzigingen zoals:

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "AllSigned"

Antwoord 13

u kunt dit proberen en de optie “Alle” selecteren

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

Antwoord 14

Het instellen van het uitvoeringsbeleid is omgevingsspecifiek. Als je een script probeert uit te voeren vanuit de draaiende x86 ISE die je hebt om de x86 PowerShell te gebruiken om het uitvoeringsbeleid in te stellen. Evenzo, als u de 64-bits ISE gebruikt, moet u het beleid instellen met de 64-bits PowerShell.


Antwoord 15

Je kunt dit ook omzeilen door het volgende commando te gebruiken:

PS > powershell Get-Content .\test.ps1 | Invoke-Expression

Je kunt ook dit artikel van Scott Sutherland lezen waarin 15 verschillende manieren worden uitgelegd om het PowerShell Set-ExecutionPolicy te omzeilen als je geen beheerdersrechten hebt:

15 manieren om de PowerShell te omzeilen Uitvoeringsbeleid


Antwoord 16

  1. Open opdracht/console uitvoeren (Win + R)
    Typ: gpedit. msc (Groepsbeleid-editor)
  2. Blader naar Lokaal computerbeleid -> Computerconfiguratie -> Beheersjablonen -> Windows-componenten -> Windows Powershell.
  3. InschakelenScriptuitvoering inschakelen
    Stel het beleid naar behoefte in. Ik heb de mijne ingesteld op “Alle scripts toestaan”.

Voer nu het run-commando uit wat je ook gebruikt.. Vertrouw erop dat de app zal draaien.. Veel plezier 🙂


Antwoord 17

Ik heb ook een soortgelijk probleem gehad, probeer dit, ik hoop dat iemand er iets aan heeft
Omdat ik Windows gebruik, volgde ik de onderstaande stappen:
Open de opdrachtprompt als beheerder en ga dan naar dit pad

C:\Users\%username%\AppData\Roaming\npm\

Zoek naar het bestand ng.ps1 in deze map (dir)
en verwijder het vervolgens (del ng.ps1)

U kunt hierna ook de npm-cache wissen, hoewel het ook zonder deze stap zou moeten werken.
Ik hoop dat het helpt zoals het voor mij werkte.

Hopelijk helpt het


Antwoord 18

In de PowerShell ISE-editor vond ik eerst de volgende regel toegestane scripts.

Set-ExecutionPolicy RemoteSigned -Scope Process

Antwoord 19

  1. Open PowerShell als beheerder en voer Set-ExecutionPolicy -Scope CurrentUser
  2. uit

  3. Geef RemoteSigned op en druk op Enter
  4. Voer Set-ExecutionPolicy -Scope CurrentUser
  5. uit

  6. Geef Onbeperkt op en druk op Enter

Antwoord 20

Dit heeft mijn probleem opgelost

Open Windows PowerShell-opdracht en voer onderstaande query uit om ExecutionPolicy

te wijzigen

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

als het om bevestiging van wijzigingen vraagt, drukt u op ‘Y’ en drukt u op enter.


Antwoord 21

Ik krijg nog een waarschuwing wanneer ik probeer Set-ExecutionPolicy RemoteSigned

uit te voeren

Ik heb het opgelost met deze commando’s

Set-ExecutionPolicy "RemoteSigned" -Scope Process -Confirm:$false
Set-ExecutionPolicy "RemoteSigned" -Scope CurrentUser -Confirm:$false

Antwoord 22

Open de Powershell-console als beheerder en stel vervolgens het uitvoeringsbeleid in

Set-ExecutionPolicy -ExecutionPolicy Remotesigned 

Antwoord 23

Set-ExecutionPolicy RemoteSigned

Het uitvoeren van deze opdracht in de beheerdersmodus in powershell zal het probleem oplossen.


Antwoord 24

In PowerShell 2.0 was het uitvoeringsbeleid standaard uitgeschakeld.

Vanaf dat moment heeft het PowerShell-team veel verbeteringen aangebracht en ze zijn ervan overtuigd dat gebruikers niet veel zullen breken tijdens het uitvoeren van scripts. Dus vanaf PowerShell 4.0 en later is het standaard ingeschakeld.

Typ in uw geval Set-ExecutionPolicy RemoteSigned in de PowerShell-console en zeg ja.


Antwoord 25

Ik had vandaag hetzelfde probleem. 64-bits uitvoeringsbeleid was onbeperkt, terwijl 32-bits beperkt was.

Hier leest u hoe u alleen het 32-bits beleid op afstand kunt wijzigen:

Invoke-Command -ComputerName $servername -ConfigurationName Microsoft.PowerShell32 -scriptblock {Set-ExecutionPolicy unrestricted}

Antwoord 26

Ga naar het registerpad HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell en stel ExecutionPolicy in op RemoteSigned.


Antwoord 27

Als je hier bent omdat je het uitvoert met Ruby of Chef en gebruik “ systeemuitvoering, voer als volgt uit:

`powershell.exe -ExecutionPolicy Unrestricted -command [Environment]::GetFolderPath(\'mydocuments\')`

Dat commando is om de map “MyDocuments” te krijgen.

-ExecutionPolicy Unrestricted doet het.

Ik hoop dat het nuttig is voor iemand anders.


Antwoord 28

Verschillende antwoorden wijzen op uitvoeringsbeleid. Sommige dingen vereisen echter ook “runas administrator”. Dit is het veiligst omdat er geen permanente wijziging is in het uitvoeringsbeleid en voorbij beheerdersbeperkingen kan komen. Gebruik met schedtask om een ​​batch te starten met:

    runas.exe /savecred /user:administrator powershell -ExecutionPolicy ByPass -File script.ps1

van zowel Jack Edmonds hierboven als Peter Mortensen / Dhana van post Een toepassing uitvoeren als “uitvoeren als beheerder” vanaf de opdrachtprompt?


Antwoord 29

Ik ontdekte dat deze regel het beste werkte voor een van mijn Windows Server 2008 R2-servers. Een paar anderen hadden geen problemen zonder deze regel in mijn PowerShell-scripts:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force -Scope Process

Antwoord 30

Je kunt een speciale manier gebruiken om het te omzeilen:

Get-Content "PS1scriptfullpath.ps1" | Powershell-NoProfile -

Het stuurt de inhoud van het powershell-script naar powershell.exe en voert het uit waarbij het uitvoeringsbeleid wordt omzeild.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

two × 3 =

Other episodes