結構面倒
まずなぜかうまくいかない "get-help about-signing"をあきらめて、
C:\WINDOWS\system32\windowspowershell\v1.0\ja\about_signing.help.txt
を直接覗き込みましょう。
PowerShellの実行ポリシーには
- Restricted
- AllSigned
- RemoteSigned
- Unrestricted
の4つがあって、デフォルトはResrictedだと書いてあります。
現在のポリシーの取得は
PS C:\Documents and Settings\localnaka> Get-ExecutionPolicy
AllSigned
ってでるんですが・・・
で、ps1ファイルを署名すればいいんだけど、よりによってAuthenticodeなので、通常は個人で取得できません。
なのでおれおれ署名を実施することになると思います。
Platform SDKなり、.NET SDKなり、Windows SDK環境を用意しろと書いてあります。
#うちは入ってるけどさぁ・・・
#証明機関を作成
makecert -n "CN=PowerShell Local Certificate Root" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer -ss Root -sr localMachine
#Authenticodeを作成
makecert -pe -n "CN=PowerShell User" -ss MY -a sha1 -eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer
#署名を実施
$cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
Set-AuthenticodeSignature sign-file.ps1 $cert
これで実行できます。