Windows10 PowerShellスクリプトの実行ポリシーや署名について 
2021/07/31 Sat.
Windows10でPowerShellスクリプトを動かそうとしたけどエラーが出て動かない。
調べたところ、初期設定ではPowerShellスクリプトが動かない設定になっているとのこと。
その設定というのが「実行ポリシー」というのだそうですが、以下のポリシーがあるようです。
前述のとおり初期設定では「Restricted」になっているためPowerShellスクリプトを動かすことができません。
そこで、実行ポリシーの変更作業および、スクリプトへの署名の方法を備忘録。
※エクスプローラー上でPowerShellスクリプトファイルを右クリックして「PowerShellで実行」をクリックすると、実行ポリシーが「Restricted」の状態でもスクリプトを実行することができます。
調べたところ、初期設定ではPowerShellスクリプトが動かない設定になっているとのこと。
その設定というのが「実行ポリシー」というのだそうですが、以下のポリシーがあるようです。
●Restricted
PowerShellスクリプトを全く動かせない(デフォルト)
●AllSigned
署名されているスクリプトのみ実行可能
●RemoteSigned
ローカル上の全てのスクリプトとリモート上の署名されているスクリプトの実行が可能
●Unrestricted
すべてのスクリプトが実行可能、リモート上のスクリプトは実行時に許可が必要
●Bypass
すべてのスクリプトが実行可能
PowerShellスクリプトを全く動かせない(デフォルト)
●AllSigned
署名されているスクリプトのみ実行可能
●RemoteSigned
ローカル上の全てのスクリプトとリモート上の署名されているスクリプトの実行が可能
●Unrestricted
すべてのスクリプトが実行可能、リモート上のスクリプトは実行時に許可が必要
●Bypass
すべてのスクリプトが実行可能
前述のとおり初期設定では「Restricted」になっているためPowerShellスクリプトを動かすことができません。
そこで、実行ポリシーの変更作業および、スクリプトへの署名の方法を備忘録。
※エクスプローラー上でPowerShellスクリプトファイルを右クリックして「PowerShellで実行」をクリックすると、実行ポリシーが「Restricted」の状態でもスクリプトを実行することができます。
PowerShellの起動
なにわともあれ、PowerShell関連の操作をするためにはPowerShellを起動する必要があります。その起動方法は「Windows」ボタンの上でマウスを右クリックして出てくるメニューの中の「Windows PowerShell(管理者)」をクリックします。
すると、PowerShellウィンドウが開きますので以下からの説明のコマンドはその画面上で操作します。
現在の実行ポリシーの確認
Get-ExecutionPolicy
実行ポリシーの変更
Set-ExecutionPolicy [実行ポリシー名称]
(例)
Set-ExecutionPolicy AllSigned
自己証明書の発行
ここでは簡易的な証明書として自己証明書を利用します。証明書を発行したパソコンでないと有効な証明書として認めてもらえませんのでご注意を。
$cert = New-SelfSignedCertificate -Subject "CN=OreOre Syoumeisyo" -KeyAlgorithm RSA -KeyLength 2048 -Type CodeSigningCert -CertStoreLocation "Cert:\LocalMachine\My\" -NotAfter 2099/12/31
「CN=」の部分は後で証明書一覧から探す場合にわかりやすい名前を付けた方が便利だと思います。
また、上記コマンドは証明書の有効期限を指定しています。「-NotAfter 2099/12/31」の部分を削除して発行した場合は有効期限が1年となります。
自己証明書の有効化
自己証明書を「信頼されたルート証明機関」に登録します。これをしないと証明書が有効なものとして認めてもらえないため、スクリプトの実行時にエラーが出ます。
Move-Item "Cert:\LocalMachine\My\$($cert.Thumbprint)" "Cert:\LocalMachine\Root"
PowerShellスクリプトへ署名
$cert=Get-ChildItem Cert:\LocalMachine\Root -CodeSigningCert
Set-AuthenticodeSignature "[署名するスクリプトのフルパス]" $cert
(例)
Set-AuthenticodeSignature "D:\powershell.ps1" $cert
スクリプト実行時の注意
たとえば、Dドライブ直下にあるスクリプトを実行したとします。
PS D:\> .\powershell.ps1
自己署名したPowerShellスクリプトを実行した際、本当に実行するかどうかの確認が出ます。
[R]を押すと毎回確認画面が出ます。
[A]を押すと初回だけ確認画面が出ます。
- 関連記事
この記事へのコメント
コメントの投稿
コメントは全て管理人が内容を確認してから表示されます(非公開コメント除く)。
内容によっては表示されない場合がありますことご了承願います。
内容によっては表示されない場合がありますことご了承願います。
« Windows10のロック画面で画像を非表示にする方法
Windows10でSDカードのファイル削除ができないのを治す方法 »