misc.log

日常茶飯事とお仕事と

Windows10でPowerShellスクリプト実行の制約を回避する

客先環境のWindows10にて、PowerShellで記述したスクリプトファイルを

powershell.exe c:\temp\script.ps1

のように実行しようとしたところ

このシステムではスクリプトの実行が無効になっているため、
ファイル C:\temp\script.ps1 を読み込むことができません。

というエラーが出ました。どうやらPowerShellスクリプトの実行自体が制限されているようです。これの回避策についてメモしておきます。

正攻法

正攻法は「設定を変えて制約を外す」です。これには、PowerShell

Set-ExecutionPolicy unrestricted

のようにSet-ExecutionPolicyコマンドが使えますが、残念ながらこのコマンドも管理者権限がないと使えません。これは、管理者モードで起動したコマンドプロンプトから「PowerShell」と打ち、管理者モードでPowerShellコマンドプロンプトを表示させた状態であれば実行可能です。ですが、そもそもファイルに書いたスクリプトを実行させようとしている時点でそういう手作業を省きたいという思いがあるので、受け入れられない方策です。

その時だけ制約を解除する方法

もう1つの手として、PowerShell.exeの動作パラメータの1つ「-ExecutionPolicy」を指定して、その時だけ制約を変更するという手があります。

powershell.exe -ExecutionPolicy unrestricted c:\temp\script.ps1

これです。これであればシステム全体に制約がかかったままでも、この命令の実行時、この処理だけ解除できました。


うごかして学ぶWindows PowerShell

うごかして学ぶWindows PowerShell

Windows PowerShell逆引きハンドブック

Windows PowerShell逆引きハンドブック