2435

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

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

私はこのコマンドを実行しました:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

Get-ExecutionPolicyPowerShellから実行すると、が返されますUnrestricted

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

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

警告:x86PowerShellを実行しています...

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

行:1文字:25

  • .\Management_Install.ps1<<<< 1

    • CategoryInfo:NotSpecified:(:) []、PSSecurityException

    • FullyQualifiedErrorId:RuntimeException

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

何かキーを押すと続行します 。。。


システムはWindowsServer2008R2です。

私は何が間違っているのですか?

4

41 に答える 41

3043

Windows Server 2008 R2を使用している場合は、 x64およびx86バージョンの PowerShell があり、どちらにも実行ポリシーを設定する必要があります。両方のホストで実行ポリシーを設定しましたか?

管理者として、PowerShell ウィンドウに次のように入力して、実行ポリシーを設定できます。

Set-ExecutionPolicy RemoteSigned

詳細については、 Set-ExecutionPolicy コマンドレットの使用 を参照してください。

完了したら、次の方法でポリシーをデフォルト値に戻すことができます。

Set-ExecutionPolicy Restricted

次のエラーが表示される場合があります。

Access to the registry key
'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied. 
To change the execution policy for the default (LocalMachine) scope, 
  start Windows PowerShell with the "Run as administrator" option. 
To change the execution policy for the current user, 
  run "Set-ExecutionPolicy -Scope CurrentUser".

そのため、次のようにコマンドを実行する必要がある場合があります (コメントに示されているように)。

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
于 2010-10-28T01:16:25.983 に答える
950

-ExecutionPolicy BypassPowerShellの実行時に追加することで、単一のファイルに対してこのポリシーをバイパスできます

powershell -ExecutionPolicy Bypass -File script.ps1
于 2012-02-06T21:28:52.910 に答える
310

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

Windows 11Windows 10Windows 7Windows 8Windows Server 2008 R2またはWindows Server 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 ビットのディレクトリの説明

于 2013-08-30T13:10:22.107 に答える
201

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

TechNetの実行ポリシーについてのページから:

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

PowerShell Basics - Execution Policy and Code Signingで列挙されている利点は次のとおりです。

  • 実行の制御 - スクリプトを実行するための信頼レベルを制御します。
  • Command Highjack - パスにコマンドが挿入されるのを防ぎます。
  • ID - 信頼する開発者によって作成および署名されたスクリプトであるか、信頼する認証局からの証明書で署名されているか、またはそのいずれかです。
  • 整合性- マルウェアや悪意のあるユーザーがスクリプトを変更することはできません。

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

Set-ExecutionPolicyこれを行うには、コマンドレットを実行します。

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

実行ポリシーの種類:

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

新しい変更の範囲

  • LocalMachine†</sup> - 実行ポリシーは、コンピューターのすべてのユーザーに影響します。
  • 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 メタデータを含まない) 独自のスクリプトに対する内部制限を強化したい場合は、ポリシーで署名済みの sript のみを実行するように強制できます。独自のスクリプトに署名するには、Scott Hanselman のPowerShell スクリプトの署名に関する記事の手順に従ってください。

: ほとんどの人は、Powershell を開くたびにこのエラーを受け取る可能性があります。これは、PS が起動したときに最初に実行しようとするのは、環境を設定するユーザー プロファイル スクリプトを実行することだからです。

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

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

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

$profile

プロファイルに気にするものがなく、セキュリティ設定に煩わされたくない場合は、プロファイルを削除するだけで、powershell は実行できないものを検出しません。

于 2014-11-16T08:05:03.503 に答える
49

Windows 7 の場合:

[スタート] メニューに移動し、「Windows PowerShell ISE」を検索します。

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

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

Powershell ISE の 64 ビット バージョン (非 x86 バージョン) についても、これらの手順を繰り返します。

@Chad Millerが示唆した手順を明確にしています。ありがとうチャド!

于 2012-12-04T05:25:34.623 に答える
49

また、スクリプトの前にこのコマンドを実行すると、問題も解決します。

set-executionpolicy unrestricted
于 2012-03-27T06:11:48.870 に答える
39

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

OK、次のように入力するだけでポリシーを変更できます。

Set-ExecutionPolicy RemoteSigned
于 2011-07-20T12:37:47.293 に答える
31

Windows 10を使用していますが、コマンドを実行できませんでした。私にいくつかの手がかりを与えた唯一のコマンドはこれでした:

[x64]

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

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

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

だから私は別の方法を見つけました(解決策):

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

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

于 2015-09-01T09:32:01.220 に答える
23

このコマンドを実行する必要があります

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
于 2021-10-08T08:04:22.363 に答える
10

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

于 2012-08-25T00:33:17.867 に答える
7

PowerShell ISEエディターで、次の行を最初に許可されたスクリプトを実行していることがわかりました。

Set-ExecutionPolicy RemoteSigned -Scope Process
于 2015-05-29T14:50:48.460 に答える
7

ウィンドウ 10 の場合:

管理者でない場合は、これを使用できます

powershell Set-ExecutionPolicy -Scope CurrentUser

コマンド パイプラインの位置 1 のコマンドレット Set-ExecutionPolicy 次のパラメーターの値を指定します。RemoteSigned

それは私の問題を魅力的に解決しました!

于 2021-09-06T01:59:16.583 に答える
3

実行しようとすると、別の警告が表示されますSet-ExecutionPolicy RemoteSigned

このコマンドで解決しました

Set-ExecutionPolicy "RemoteSigned" -Scope Process -Confirm:$false

Set-ExecutionPolicy "RemoteSigned" -Scope CurrentUser -Confirm:$false
于 2020-02-09T15:16:52.647 に答える
2

PowerShell 2.0 では、実行ポリシーは既定で無効に設定されていました。

それ以来、PowerShell チームは多くの改善を行っており、ユーザーがスクリプトを実行しているときに問題が発生することはほとんどないと確信しています。そのため、PowerShell 4.0 以降では、既定で有効になっています。

あなたの場合、Set-ExecutionPolicy RemoteSignedPowerShell コンソールから入力して、はいと言います。

于 2015-10-28T19:12:36.593 に答える
2

この行は、私のWindows Server 2008 R2 サーバーの 1 つに最適であることがわかりました。私の PowerShell スクリプトに次の行がなくても、他のいくつかは問題がありませんでした。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force -Scope Process
于 2015-07-02T13:03:51.430 に答える
1

いくつかの回答は、実行ポリシーを示しています。ただし、「runas 管理者」も必要なものもあります。これは、実行ポリシーに永続的な変更がなく、管理者の制限を回避できるという点で最も安全です。schedtask で使用して、バッチを開始します。

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

上記の Jack Edmonds と投稿の Peter Mortensen / Dhana の両方からコマンド プロンプトからアプリケーションを「管理者として実行」する方法は?

于 2016-01-16T01:40:03.513 に答える
1

RubyまたはChefで実行し、 `` システム実行を使用しているためにここにいる場合は、次のように実行します。

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

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

-ExecutionPolicy Unrestrictedトリックを行います。

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

于 2014-10-20T00:09:21.937 に答える
0

Set-ExecutionPolicy RemoteSignedコマンドを実行

于 2020-04-06T06:45:22.193 に答える