脱力系備忘録BloG ホーム » パソコン »Windows10 PowerShellスクリプトの実行ポリシーや署名について

Windows10 PowerShellスクリプトの実行ポリシーや署名について  

Windows10でPowerShellスクリプトを動かそうとしたけどエラーが出て動かない。

調べたところ、初期設定ではPowerShellスクリプトが動かない設定になっているとのこと。

その設定というのが「実行ポリシー」というのだそうですが、以下のポリシーがあるようです。

Restricted
PowerShellスクリプトを全く動かせない(デフォルト)

AllSigned
署名されているスクリプトのみ実行可能

RemoteSigned
ローカル上の全てのスクリプトとリモート上の署名されているスクリプトの実行が可能

Unrestricted
すべてのスクリプトが実行可能、リモート上のスクリプトは実行時に許可が必要

Bypass
すべてのスクリプトが実行可能

前述のとおり初期設定では「Restricted」になっているためPowerShellスクリプトを動かすことができません。
そこで、実行ポリシーの変更作業および、スクリプトへの署名の方法を備忘録。
※エクスプローラー上でPowerShellスクリプトファイルを右クリックして「PowerShellで実行」をクリックすると、実行ポリシーが「Restricted」の状態でもスクリプトを実行することができます。

PowerShellの起動

なにわともあれ、PowerShell関連の操作をするためにはPowerShellを起動する必要があります。その起動方法は「Windows」ボタンの上でマウスを右クリックして出てくるメニューの中の「Windows PowerShell(管理者)」をクリックします。
PowerShell-guide_01.png
すると、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]を押すと初回だけ確認画面が出ます。
パソコンの関連記事

category: パソコン

この記事へのコメント

コメントの投稿

非公開コメント

プロフィール

最新記事

最新コメント

▲ Pagetop