このシステムでは実行中のスクリプトが無効になっているため、ps1をロードできません


120

powershellはc#からスクリプトを実行しようとしています。

最初にをに設定ExecutionPolicyするUnrestrictedと、スクリプトはから実行され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
ポリシースコープをローカルマシンに設定しようとしましたか?'Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted'
トーテム

6
Get-ExecutionPolicy -List結果を使用して質問を実行および編集します。このコマンドは、さまざまなスコープとそのExecutionPolicy設定を表示します。
James C.

それはうまくいかないようですが、はっきり言って、これはコマンドラインレベルではありません。リモートデスクトップで問題なく実行できるからです。
yorkshireflatcap

回答:


369

これは、現在のユーザーが未定義であることが原因である可能性がありますExecutionPolicy

次のことを試すことができます。

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

3
動作します!! ありがとう!
RakhiDhavale19年

2
私はParcelでこの問題を抱えていました、そして私はあなたの答えで解決しました、ありがとう!
アンジェロポロット

12
ところで、これはPowershellWindowsのcmdではなく、で実行する必要があります。
トランプ2020-正義は

本当にありがとう!!みんな最初にこれを試してみるべきです!
FesNguyen20年

3
@HDJEMAI、これは実行しているコンテキストによって異なると思います。Unrestrictedつまり、すべてのスクリプトを実行できます。これに対する別のオプションは、実行ポリシーをRemoteSignedこれが許可するように設定することですAllow local scripts and remote signed scriptsが、アプリケーションとその実行内容によっては、同じエラーがスローされる場合があります。あなたのアプローチはセキュリティの観点から有効であり、を使用する前にいつでもポリシーが何であるかを読むことができると思いますGet-ExecutionPloicy。とはいえ、スコープは現在のユーザーなので、私の意見ではリスクは小さいです。これがお役に立てば幸いです。
トム

27

管理モードでPowerShellを開き、次のコマンドを実行します

Set-ExecutionPolicy RemoteSigned


25

このコードをPowerShellまたはcmdで実行します

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

1
他の言語でも機能します(今すぐIonicアプリを編集します)。
チウダ

私のために働いたとしても、活字体は、TSCのコマンドを使用して実行している得るためにVisual Studioのコード端子内部RAN
aonepathan

12

Visual Studio Codeを使用している場合:

  1. ターミナルを開く
  2. 次のコマンドを実行します:Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
  3. 次に、コマンド分度器conf.jsを実行します

これは分度器テストスクリプトの実行に関連しており、同じ問題に直面し、このように解決されました。


7

次の3つの手順は、このシステムエラーで実行中のスクリプトが無効になっていることを修正するために使用されます

ステップ1:この種の問題を修正するには、PowerShellを管理者モードで起動する必要があります。

ステップ2:次のコマンドセットを入力します-ExecutionPolicy RemoteSignedステップ3:確認のためにYを押します。

詳細については、以下をご覧くださいhttps://youtu.be/J_596H-sWsk


4

PowerShell実行ポリシーは、デフォルトで制限付きに設定されています。Set-ExecutionPolicyコマンドレットを使用してPowerShell実行ポリシーを変更できます。外部スクリプトを実行するには、ポリシーをRemoteSignedに設定します。

PS C:> Set-ExecutionPolicy RemoteSigned以下は、PowerShellの4つの異なる実行ポリシーのリストです。

制限付き–スクリプトを実行できません。AllSigned –信頼できる発行元によって署名されたスクリプトのみを実行できます。RemoteSigned –ダウンロードしたスクリプトは、信頼できる発行元によって署名されている必要があります。無制限–すべてのWindowsPowerShellスクリプトを実行できます。


3

管理者モードでWindowsPowerShellを開き、次のコマンドとその作業を実行しますVOILA !!

Set-ExecutionPolicy RemoteSigned


2

別の解決策は、ディレクトリC:\ Users%username%\ AppData \ Roaming \ npm \からng.ps1を削除し、npmキャッシュをクリアすることです。


1
npmモジュールでも同じエラーが発生しました。これが私が最も気に入っているソリューションです。.ps1ファイルを削除すると、他の2つのスクリプトのいずれか(たとえば、Windowsの.cmd、それ以外の場合は拡張子のないもの)が適切に使用され、セキュリティ構成を変更する必要はありません
Giovanni P.

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.