+ B. 自己署名証明書を付けてPowerShell実行する方法(クリックで展開)
該当PowerShell に自己署名証明書を付ける方法
リネームスクリプトなどではなく、定期的に実行するスクリプトの場合は自己署名証明書を付けるのがオススメ。
実行ポリシーを変更している時間が長いほどセキュリティリスクがあるので。
1. 該当PowerShellスクリプトをDドライブ直下に置く
NASではなくDドライブ直下に該当PowerShellを用意します。
例えば、MyScript.ps1 とします。(D:\MyScript.ps1)
2. MyScript.ps1 に自己署名証明書を付ける
以下をテキストファイルにコピペして、SelfSign.ps1 として保存。
このファイルもDドライブ直下に置く。(D:\SelfSign.ps1)
# 署名用の証明書を作成
$cert = New-SelfSignedCertificate `
-Subject "CN=PowerShellスクリプト署名用証明書" `
-KeyAlgorithm RSA `
-KeyLength 2048 `
-Type CodeSigningCert `
-CertStoreLocation Cert:\CurrentUser\My\ `
-NotAfter ([datetime]"2099/01/01")
# 信頼済みのルートとして使用
Move-Item "Cert:\CurrentUser\My\$($cert.Thumbprint)" Cert:\CurrentUser\Root
# 証明書への参照を取得
$rootcert = @(Get-ChildItem cert:\CurrentUser\Root -CodeSigningCert)[0]
# スクリプトに署名
Set-AuthenticodeSignature D:\MyScript.ps1 $rootcert
15行目の MyScript.ps1 へのパスが合っている確認する。
SelfSign.ps1のディレクトリでPowerShell起動し、SelfSign.ps1 を実行します。
すると、自己署名証明書が付いた MyScript.ps1 が得られます。
MyScript.ps1 をエディタで開くと、以下の文字列の追加を確認できます。
# SIG # Begin signature block
# MIIGCwYJKoZIhvcNAQcCoIIF/DCCBfgCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
(省略)
# SIG # End signature block
3. MyScript.ps1 を NASの該当フォルダにコピーして実行
MyScript.ps1 を NASの該当フォルダにコピーします。
デジタル署名されているので、NAS上で MyScript.ps1 が実行できます。