225

このコードを実行して、ASP.NET アプリケーションから PowerShell コードを実行します。

System.Management.Automation.Runspaces.Runspace runspace = System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace();
runspace.Open();
System.Management.Automation.Runspaces.Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript(@"\\servername\path");

pipeline.Commands.Add("Out-String");

Collection<PSObject> results = pipeline.Invoke();

runspace.Close();

しかし、私はエラーが発生しています:

このシステムではスクリプトの実行が無効になっているため、.ps1 を読み込めません。詳細については、「get-help about_signing」を参照してください。

同じコードは、コマンド プロンプトまたは Windows (Windows フォーム) アプリケーションから正常に実行されます。

4

5 に答える 5

392

実行ポリシーにより、スクリプトの実行がブロックされています。

管理者として PowerShell を実行し、クライアント PC で Unrestricted に設定する必要があります。これを行うには、次のように Invoke を呼び出します。

Set-ExecutionPolicy Unrestricted
于 2013-05-09T11:01:44.717 に答える
144

他の回答で提案されている手順に従い、実行ポリシーが正しく設定されていることを確認しても、スクリプトが失敗する特定のシナリオがあります。これが発生した場合、PowerShell の 32 ビット バージョンと 64 ビット バージョンの両方を備えた 64 ビット マシンを使用している可能性があり、実行ポリシーが設定されていないバージョンでエラーが発生しています。この設定は両方のバージョンには適用されないため、明示的に 2 回設定する必要があります。

Windows ディレクトリで System32 と SysWOW64 を探します。

ディレクトリごとに次の手順を繰り返します。

  1. WindowsPowerShell\v1.0 に移動し、powershell.exe を起動します。

  2. ExecutionPolicy の現在の設定を確認します。

    Get-ExecutionPolicy -List

  3. 必要なレベルとスコープの ExecutionPolicy を設定します。次に例を示します。

    Set-ExecutionPolicy -Scope LocalMachine Unrestricted

ポリシーを設定しようとしているスコープによっては、管理者として PowerShell を実行する必要がある場合があることに注意してください。

于 2014-04-08T22:01:10.357 に答える
49

実行する必要がありますSet-ExecutionPolicy

Set-ExecutionPolicy Unrestricted <-- Will allow unsigned PowerShell scripts to run.

Set-ExecutionPolicy Restricted <-- Will not allow unsigned PowerShell scripts to run.

Set-ExecutionPolicy RemoteSigned <-- Will allow only remotely signed PowerShell scripts to run.
于 2013-11-14T10:13:42.287 に答える
49

問題は、実行ポリシーがユーザーごとに設定されていることです。アプリケーションを動作させるには、実行するたびにアプリケーションで次のコマンドを実行する必要があります。

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned

おそらく、ASP.NET ユーザーにもこれを設定する方法がありますが、この方法は、システム全体を開くのではなく、アプリケーションだけを開くことを意味します。

ソース

于 2013-05-09T11:47:02.670 に答える
16

同様の問題があり、Windows Server 2012 のデフォルトの cmd が x64 を実行していることに気付きました。

Windows 7、Windows 8、Windows Server 2008 R2、または Windows Server 2012 の場合、管理者として次のコマンドを実行します。

x86

C:\Windows\SysWOW64\cmd.exe のコマンドを実行します。powershell Set-ExecutionPolicy RemoteSigned

x64

開くC:\Windows\system32\cmd.exe コマンドを実行するpowershell Set-ExecutionPolicy RemoteSigned

を使用してモードを確認できます

CMD の場合: echo %PROCESSOR_ARCHITECTURE% Powershell の場合:[Environment]::Is64BitProcess

これがお役に立てば幸いです。

于 2016-06-16T07:23:32.060 に答える