PowerShell には「このシステムではスクリプトの実行が無効になっています」と表示されます。

StackOverflow https://stackoverflow.com/questions/4037939

  •  27-09-2019
  •  | 
  •  

質問

を実行しようとしています を呼び出すファイル からのスクリプト cmd.exe, とすると、以下のエラーが発生します。

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

走ってしまいました

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

そして私が走るとき Get-ExecutionPolicy から , 、分かりました Unrestricted 戻る。

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...

ファイル C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1 このシステムではスクリプトの実行が無効になっているため、ロードできません。参照してください "get-help about_signing" 詳細については。

行:1 文字:25

  • .\Management_Install.ps1 <<<< 1

    • カテゴリ情報 :指定されていない:(:) []、PSSecurityException

    • FullyQualifiedErrorId :ランタイム例外

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

Press any key to continue . . .

システムはWindows Server 2008R2です。

私の何が間違っているのでしょうか?

他のヒント

あなたはPowerShellを実行するときに-ExecutionPolicy ByPassを追加することで、このポリシーをバイパスすることができます。

powershell -ExecutionPolicy ByPass -File script.ps1

同様の問題があり、デフォルトで cmd の上 Windowsサーバー2012, 、x64 のものを実行していました。

のために Windows 7, ウィンドウズ8, ウィンドウズ10, Windows Server 2008 R2 または Windowsサーバー2012, 、次のコマンドを実行します。 管理者:

x86 (32ビット)
開ける C:\Windows\SysWOW64\cmd.exe
コマンドを実行します powershell Set-ExecutionPolicy RemoteSigned

x64 (64ビット)
開ける C:\Windows\system32\cmd.exe
コマンドを実行します powershell Set-ExecutionPolicy RemoteSigned

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

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

参考文献:
MSDN - Windows PowerShell 実行ポリシー
Windows - 32 ビットと 64 ビットのディレクトリの説明

既存の回答のほとんどは、 どうやって, 、しかし、それを説明している人はほとんどいません。 なぜ. 。また、インターネット上で見知らぬ人からのコード、特にセキュリティ対策を無効にするコードを実行する前に、自分が何をしているのかを正確に理解する必要があります。そこで、この問題についてもう少し詳しく説明します。

TechNet より 「実行ポリシーについて」ページ:

Windows PowerShell 実行ポリシーを使用すると、Windows PowerShell が構成ファイルを読み込んでスクリプトを実行する条件を決定できます。

その利点を列挙すると、 PowerShell の基本 - 実行ポリシーとコード署名, 、 は:

  • 実行の制御 - スクリプト実行の信頼レベルを制御します。
  • コマンドハイジャック - パスへのコマンドの挿入を防ぎます。
  • 身元 - スクリプトは私が信頼する開発者によって作成および署名されているか、または信頼する認証局からの証明書で署名されているか、あるいはその両方か。
  • 誠実さ - マルウェアや悪意のあるユーザーがスクリプトを変更することはできません。

現在の実行ポリシーを確認するには、次のコマンドを実行します。 Get-ExecutionPolicy. 。しかし、あなたはおそらくそれを変えたいと思ってここにいるのです。

そのためには、 Set-ExecutionPolicy コマンドレット。

実行ポリシーを更新する際には、2 つの主要な決定を行う必要があります。

実行ポリシーのタイプ:

  • Restricted - ローカル、リモート、またはダウンロードされたスクリプトはシステム上で実行できません。
  • AllSigned - 実行されるすべてのスクリプトにはデジタル署名が必要です。
  • RemoteSigned - すべてのリモート スクリプト (UNC) またはダウンロードには署名する必要があります。
  • Unrestricted - どのタイプのスクリプトでも署名は必要ありません。

新たな変更の範囲

  • LocalMachine - 実行ポリシーは、コンピュータのすべてのユーザーに影響します。
  • CurrentUser - 実行ポリシーは現在のユーザーにのみ影響します。
  • Process - 実行ポリシーは、現在の Windows PowerShell プロセスにのみ影響します。

† = デフォルト

例えば:CurrentUser のみのポリシーを RemoteSigned に変更する場合は、次のコマンドを実行します。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

注記:実行ポリシーを変更するには、以下を実行する必要があります。 管理者としての PowerShell。通常モードで実行ポリシーを変更しようとすると、次のエラーが表示されます。

レジストリ キー 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' へのアクセスが拒否されました。デフォルト (LocalMachine) スコープの実行ポリシーを変更するには、「管理者として実行」オプションを使用して Windows PowerShell を起動します。

インターネットからダウンロードされていない (または少なくとも UNC メタデータが含まれていない) 独自のスクリプトに対する内部制限を強化したい場合は、署名付きスクリプトのみを実行するようにポリシーを強制できます。独自のスクリプトに署名するには、Scott Hanselman の記事の指示に従ってください。 PowerShell スクリプトへの署名.

注記:ほとんどの人は、Powershell を開くたびにこのエラーが発生する可能性があります。これは、PS が起動すると最初に実行しようとするのは、環境を好みに合わせて設定するユーザー プロファイル スクリプトの実行であるためです。

ファイルは通常、次の場所にあります。

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

powershell 変数を実行すると、正確な場所を見つけることができます。

$profile

プロファイルに気になるものが何もなく、セキュリティ設定に手間をかけたくない場合は、プロファイルを削除するだけで、PowerShell は実行できないものを見つけることができなくなります。

Windows 7では、

ゴースタートメニューへと "Windows PowerShellのISE" を検索します。

右x86バージョンをクリックして「管理者として実行」を選択します。

上部に、Set-ExecutionPolicy RemoteSignedを貼り付けます。スクリプトを実行します。 "はい" を選択します。

すぎるPowershellのISEの64ビットバージョン(非x86バージョン)のために、これらの手順を繰り返します。

私はちょうど@Chadミラーがほのめかしていることの手順を明確にしています。おかげでチャド!

また、このコマンドを実行するスクリプトはまた、問題が解決する前に:

set-executionpolicy unrestricted
あなたが管理者でない環境にある場合は、

、あなたはあなたのためだけに実行ポリシーを設定することができ、そしてそれは、管理者を必要としません。

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

または

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

あなたはヘルプ項目にそれについてのすべてを読むことができます。

Help Get-ExecutionPolicy -Full
Help Set-ExecutionPolicy -Full
すべてのスクリプトは、あなた自身が実行される作成し、インターネットからダウンロードしたすべてのスクリプトは、信頼できる発行元によって署名する必要があります。

はRemoteSigned。

OK、単純に次のように入力してポリシーを変更します:

Set-ExecutionPolicy RemoteSigned
我々は、以下のコマンドにより、現在のExecutionPolicyのステータスを取得することができます:

Get-ExecutionPolicy;
デフォルトでは、 に制限があります。 PowerShellスクリプトの実行を許可するために、我々は、このExecutionPolicyを設定する必要がありますいずれかとのバイパスまたは無制限の。

私たちは、PowerShellのコマンド以下のいずれかを使用してBypassまたはUnrestrictedとして現在のユーザーのためのポリシーを設定することができます:

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

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

無制限のポリシーをロードするすべての構成ファイルとすべてのスクリプトを実行します。あなたは、インターネットからダウンロードした未署名のスクリプトを実行した場合、あなたはそれを実行する前に許可を求めるメッセージが表示されます。

で一方のバイパスの政策、何がブロックされていないと、スクリプトの実行中に何の警告やプロンプトはありません。バイパスExecutionPolicyがよりUnrestrictedよりも緩和されます。

使っています ウィンドウズ10 コマンドを実行できませんでした。いくつかの手がかりを与えてくれた唯一のコマンドは次のとおりです。

[x64]

  1. C:\Windows\SysWOW64\cmd.exe を開きます [管理者として]
  2. コマンドを実行します> powershell Set-ExecutionPolicy 無制限

しかし、これはうまくいきませんでした。それは限られていました。おそらく Windows10 の新しいセキュリティ ポリシーでしょう。このエラーが発生しました:

実行ポリシーの設定:Windows PowerShell は実行ポリシーを正常に更新しましたが、設定はより具体的なスコープで定義されたポリシーによって上書きされます。オーバーライドにより、シェルは現在の有効な実行ポリシーを保持します...

そこで別の方法を見つけました(解決):

  1. 実行コマンド/コンソールを開きます (勝つ + R)
  2. タイプ: gpedit.msc (グループポリシー 編集者)
  3. 参照する ローカルコンピュータポリシー -> コンピュータの構成 -> 管理用テンプレート -> Windows コンポーネント -> Windows Powershell.
  4. 有効にする "スクリプトの実行をオンにする"
  5. 必要に応じてポリシーを設定します。私は「」に設定しましたすべてのスクリプトを許可する".

さあ、PowerShell を開いて楽しんでください ;)

実行ポリシーを設定すると、環境に固有です。あなたが持っているのx86 ISE を実行しているからスクリプトを実行しようとしている場合実行ポリシーを設定するには、x86のPowerShellを使用しています。同様に、あなたは、64ビットISEを実行している場合は、64ビット版のPowerShellでポリシーを設定する必要があります。

ウィン + R とタイプコピーペーストコマンドを押し、 OK

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

そして、あなたのスクリプトを実行します。

すると元に戻すの変更のように:

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

次のコマンドを使用しても、このバイパスすることができます

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

また、あなたは管理者権限を持っていない場合のPowerShell Set-ExecutionPolicyバイパスに15種類の方法を説明しますスコットSutherlandのこの記事を読むことができます:

15個の方法バイパスへPowerShell実行ポリシー

  1. PowerShell を管理者として開き、実行します Set-ExecutionPolicy -Scope CurrentUser
  2. 提供する リモート署名済み そしてEnterを押してください
  3. 走る Set-ExecutionPolicy -Scope CurrentUser
  4. 提供する 無制限 そしてEnterを押してください
私が最初に次の行を実行したPowerShellの ISE のエディタで

スクリプトを許可されます。

Set-ExecutionPolicy RemoteSigned -Scope Process

でのPowerShell 2.0、実行ポリシーは、デフォルトでは無効になっに設定した。

その時から、PowerShellチームは、多くの改善を行っている、と彼らは、スクリプトを実行中に、ユーザーが多くのものを破壊しないと確信しています。だから、PowerShellの4.0から以降、それはデフォルトで有効になっています。

あなたのケースでは、

、PowerShellコンソールからタイプSet-ExecutionPolicy RemoteSignedとはい言ってます。

私は今日、同じ問題を抱えていました。 32ビットが制限しながら、64ビットの実行ポリシーは、無制限た。

ここでリモートからちょうど32ビットのポリシーを変更する方法は次のとおりです。

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

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShellにレジストリパスExecutionPolicyとセットRemoteSignedに移動します。

あなたがそれを実行するためにここにいるのなら ルビー または シェフ そして、「システム実行」を使用して、次のように実行します。

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

そのコマンドは「MyDocuments」フォルダーを取得するためのものです。

-ExecutionPolicy Unrestricted 効果があります。

他の人の役に立つことを願っています。

いくつかの答えは、実行ポリシーを指します。しかし、いくつかのものはまた、「runasコマンド管理者」が必要です。そこに実行ポリシーへの恒久的な変更はありません、そして過去の管理者の制限を得ることができるという点で、これが最も安全です。 schedtaskで使用してバッチを起動します:

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

上記の両方のジャック・エドモンズ、そしてポストのピーター・モーテンセン/ダナ<のhref = "からhttps://stackoverflow.com/questions/8249705/how-to-run-an-application-as-run-as-administrator -from--コマンド・プロンプト ">のようにアプリケーションを実行する方法『コマンドから』管理者として実行し、プロンプトですか

開くの管理者のようにPowerShellウィンドウ。それは動作します。

scroll top