이 시스템에서 스크립트 실행이 비활성화되어 있으므로 ps1을로드 할 수 없습니다.


120

powershellC #에서 스크립트 를 실행하려고합니다 .

우선은 설정 ExecutionPolicyUnrestricted하고 스크립트가 지금부터 실행됩니다 PowerShell ISE.

이제 이것은 C # 내 코드입니다.

class Program
{
    private static PowerShell ps;
    static void Main(string[] args)
    {
        ps = PowerShell.Create();
        string ps1File = Path.Combine(Environment.CurrentDirectory, "script.ps1");
        ExecuteScript(ps1File);
        Console.ReadLine();
    }

    static void ExecuteScript(string script)
    {
        try
        {
            ps.AddScript(script);
            Collection<PSObject> results = ps.Invoke();
            Console.WriteLine("Output:");
            foreach (var psObject in results)
            {
                Console.WriteLine(psObject);
            }
            Console.WriteLine("Non-terminating errors:");
            foreach (ErrorRecord err in ps.Streams.Error)
            {
                Console.WriteLine(err.ToString());
            }
        }
        catch (RuntimeException ex)
        {
            Console.WriteLine("Terminating error:");
            Console.WriteLine(ex.Message);
        }
    }
}

출력은 다음과 같습니다.

이 시스템에서 스크립트 실행이 비활성화되어 있으므로 ps1을로드 할 수 없습니다. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=135170 에서 about_Execution_Policies를 참조하십시오 .


1
정책 범위를 로컬 컴퓨터로 설정하려고 했습니까? '설정-ExecutionPolicy - 범위 LocalMachine -ExecutionPolicy 무제한'
토템

6
Get-ExecutionPolicy -List결과로 질문을 실행 하고 편집하십시오. 이 명령은 다른 범위와 해당 ExecutionPolicy 설정을 보여줍니다.
James C.

그것은 작동하지 않는 것 같습니다. 두렵지 만 분명히 말하면 문제없이 원격 데스크톱에서 실행할 수 있기 때문에 명령 줄 수준이 아닙니다.
yorkshireflatcap

답변:


372

이것은 현재 사용자가 정의되지 않은 ExecutionPolicy.

다음을 시도해 볼 수 있습니다.

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

3
작품 !! 감사 !
Rakhi Dhavale

2
나는 Parcel 에이 문제가 있었고 귀하의 답변으로 해결했습니다. 감사합니다!
Ângelo Polotto

12
BTW, 이것은 PowershellWindows의 cmd가 아닌 에서 실행되어야합니다 .
user218867

정말 고마워!! 먼저 시도해보세요!
Fes Nguyen

3
@HDJEMAI, 나는 이것이 당신이 이것을 실행하는 컨텍스트에 달려 있다고 생각합니다. Unrestricted모든 스크립트를 실행할 수 있음을 의미합니다. 이에 대한 또 다른 옵션 RemoteSigned은 허용 되는대로 실행 정책을 로 설정하는 Allow local scripts and remote signed scripts것이지만 응용 프로그램과 수행중인 작업에 따라 여전히 동일한 오류가 발생할 수 있습니다. 나는 당신의 접근 방식이 보안 측면에서 타당하다고 생각하며을 사용하기 전에 항상 정책이 무엇인지 읽을 수 Get-ExecutionPloicy있습니다. 이것이 범위가 현재 사용자라고 말했지만 제 생각에는 위험이 적습니다. 이게 도움이 되길 바란다.
Tom

27

관리 모드에서 PowerShell을 열고 다음 명령을 실행합니다.

Set-ExecutionPolicy RemoteSigned


25

이 코드를 powershell 또는 cmd에서 실행하십시오.

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

1
다른 언어에서도 작동합니다 (지금 Ionic 앱 편집)!
Chiwda

저를 위해 일했습니다. tsc 명령을 사용하여 Typescript를 실행하기 위해 VIsual Studio Code 터미널 내부에서 실행되었습니다
aonepathan

12

Visual Studio 코드를 사용하는 경우 :

  1. 터미널 열기
  2. 다음 명령을 실행합니다. Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
  3. 그런 다음 protractor conf.js 명령을 실행하십시오.

이것은 각도기 테스트 스크립트 실행과 관련이 있으며 동일한 문제에 직면하여 이렇게 해결되었습니다.


7

다음 세 단계는이 시스템 오류에서 실행중인 스크립트가 비활성화됨을 수정하는 데 사용됩니다.

Step1 : 이런 종류의 문제를 해결하려면 관리자 모드에서 Power Shell을 시작해야합니다.

2 단계 : 다음 명령을 입력합니다. set-ExecutionPolicy RemoteSigned 3 단계 : 확인을 위해 Y를 누릅니다.

자세한 내용은 다음을 방문하십시오 https://youtu.be/J_596H-sWsk


4

PowerShell 실행 정책은 기본적으로 제한됨으로 설정됩니다. Set-ExecutionPolicy cmdlet을 사용하여 PowerShell 실행 정책을 변경할 수 있습니다. 외부 스크립트를 실행하려면 정책을 RemoteSigned로 설정합니다.

PS C :> Set-ExecutionPolicy RemoteSigned 아래는 PowerShell의 네 가지 실행 정책 목록입니다.

제한됨 – 스크립트를 실행할 수 없습니다. AllSigned – 신뢰할 수있는 게시자가 서명 한 스크립트 만 실행할 수 있습니다. RemoteSigned – 다운로드 한 스크립트는 신뢰할 수있는 게시자가 서명해야합니다. 제한 없음 – 모든 Windows PowerShell 스크립트를 실행할 수 있습니다.


3

관리자 모드에서 windows powershell을 열고 다음 명령과 그 작업을 실행하십시오 VOILA !!

Set-ExecutionPolicy RemoteSigned


2

또 다른 해결책은 C : \ Users % username % \ AppData \ Roaming \ npm \ 디렉터리에서 ng.ps1을 제거하고 npm 캐시를 지우는 것입니다.


1
npm 모듈에서 동일한 오류가 발생했으며 이것이 제가 가장 좋아하는 솔루션입니다. .ps1 파일을 제거하면 다른 두 스크립트 (예 : Windows의 .cmd, 그렇지 않으면 확장자가없는 스크립트) 중 하나를 사용하게되며 보안 구성을 변경할 필요가 없습니다
Giovanni P.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.