回答:
これは、PowerShellのデフォルトのセキュリティレベルである可能性があり、(IIRC)は署名されたスクリプトのみを実行します。
これを入力してみてください:
set-executionpolicy remotesigned
これにより、PowerShellにローカル(つまり、ローカルドライブ上)の署名されていないスクリプトの実行を許可するように指示します。
次に、スクリプトを再度実行してください。
実行する必要がありますSet-ExecutionPolicy
:
Set-ExecutionPolicy Restricted <-- Will not allow any powershell scripts to run. Only individual commands may be run.
Set-ExecutionPolicy AllSigned <-- Will allow signed powershell scripts to run.
Set-ExecutionPolicy RemoteSigned <-- Allows unsigned local script and signed remote powershell scripts to run.
Set-ExecutionPolicy Unrestricted <-- Will allow unsigned powershell scripts to run. Warns before running downloaded scripts.
Set-ExecutionPolicy Bypass <-- Nothing is blocked and there are no warnings or prompts.
Restricted
がデフォルトのポリシーです。続きを読む
使用する:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
現在のセッションでPowerShellを実行できるようにするには、常に上記のコマンドを使用してください。
次のようにPowerShellを呼び出すことで、このエラーを回避できました。
powershell -executionpolicy bypass -File .\MYSCRIPT.ps1
つまり、 -executionpolicy bypass
、スクリプトを呼び出す方法に。
これはWindows 7 Service Pack 1で機能しました。PowerShellを初めて使用するため、知らないうちに警告が出る可能性があります。
[編集2017-06-26]私はこの手法をWindows 10やWindows 2012 R2を含む他のシステムで問題なく使用し続けました。
これが私が今使っているものです。これにより、スクリプトをクリックしてスクリプトを誤って実行することがなくなります。これをスケジューラーで実行するときに、「scheduler」という1つの引数を追加すると、プロンプトがバイパスされます。
これにより、最後にウィンドウが一時停止されるため、PowerShellの出力を表示できます。
if NOT "%1" == "scheduler" (
@echo looks like you started the script by clicking on it.
@echo press space to continue or control C to exit.
pause
)
C:
cd \Scripts
powershell -executionpolicy bypass -File .\rundps.ps1
set psexitcode=%errorlevel%
if NOT "%1" == "scheduler" (
@echo Powershell finished. Press space to exit.
pause
)
exit /b %psexitcode%
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
上記のコマンドは、次のエラーが発生した場合でも機能しました。
Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied.
また.\
、スクリプト名の前に含める必要がある場合があることも知っておく価値があります。例えば:
.\scriptname.ps1
このコマンドset-executionpolicy unrestricted
を使用すると、作成したすべてのスクリプトをログインユーザーとして実行できます。set-executionpolicy signed
ログアウトする前に、コマンドを使用して実行ポリシー設定を署名済みに戻すようにしてください。
set-executionpolicy signed
Cannot bind parameter 'ExecutionPolicy'
などを与える
Windows 10の場合:myfile.ps1のセキュリティプロパティの変更をクリックし、myfile.ps1の/プロパティを右クリックして[アクセスを許可]を変更します。