PowerShell mówi "wykonywanie skryptów jest wyłączone w tym systemie."

Próbuję uruchomić plik [tag:cmd], który wywołuje skrypt [tag:powershell] z cmd.exe, i dostaję poniższy błąd:

Management_Install.ps1 nie może zostać załadowany, ponieważ wykonywanie skryptów jest wyłączone w tym systemie.

I have run

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

i kiedy uruchamiam Get-ExecutionPolicy z [tag:powershell], dostaję Unrestricted z powrotem.

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

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

WARNING: Running x86 PowerShell...

Plik C:\Projects.Practices.ESB\Source\Przykłady portalu zarządzania\Install\Scripty\Management_Install.ps1 nie może zostać załadowany, ponieważ wykonywanie skryptów jest wyłączone w tym systemie. Proszę zobaczyć "get-help about_signing", aby uzyskać więcej szczegółów.

W linii:1 znak:25

  • .management_Install.ps1 <<<<< 1
  • CategoryInfo : NotSpecified: (:) [], PSSecurityException
  • FullyQualifiedErrorId : RuntimeException
C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> PAUSE

Press any key to continue . . .

System to Windows Server 2008R2.

Co robię źle?

Rozwiązanie

Jeśli używasz Windows Server 2008 R2 to istnieje wersja x64 i x86 PowerShell, z których obie muszą mieć ustawione polityki wykonania. Czy ustawiłeś politykę wykonania na obu hostach?

Jako Administrator, możesz ustawić politykę wykonania wpisując to w oknie PowerShell:

Set-ExecutionPolicy RemoteSigned

Aby uzyskać więcej informacji, zobacz Using the Set-ExecutionPolicy Cmdlet.

Komentarze (6)

Możesz ominąć tę politykę poprzez dodanie -ExecutionPolicy ByPass podczas uruchamiania PowerShell

powershell -ExecutionPolicy ByPass -File script.ps1
Komentarze (5)

RemoteSigned: wszystkie skrypty, które sam stworzyłeś będą uruchamiane, a wszystkie skrypty pobrane z Internetu będą musiały być podpisane przez zaufanego wydawcę.

OK, zmień politykę wpisując po prostu:

Set-ExecutionPolicy RemoteSigned
Komentarze (1)