Seasons.NET

ちょっとした技術ブログです

profile.ps1を使用するには?

PowerShellは、独自の設定をprofile.ps1に記述することができますが、
それを配置するには、PowerShell上で、

[Environment]::GetFolderPath("Personal") 

を実行し、表示されたパスにWindowsPowerShellというフォルダを作成、profile.ps1という
フォルダを作成します。

次にWindowsSDKに付属している makecertツールで署名を作成します。

  • makecertについて
    • 普通にインストールしていれば、"C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin"にあるでしょう。
>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
Succeeded

>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
Succeeded

これを実行すると、IEのインターネットオプションでコード証明を表示すると新しい署名が追加されています。
コード署名
コード署名 posted by (C)Seasons

次にPowerShell上で、署名の確認をします。

Get-ChildItem cert:\CurrentUser\My -codesigning

このコマンドで署名が表示されなければ正し作成されてません。

では、次に署名データを登録します。

$cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
cd "パス=profile.ps1がおいてある場所。"
Set-AuthenticodeSignature profile.ps1 $cert

これでデジタル署名がprofile.ps1に登録されたので、PowerShellを再起動します。
その際、デジタル署名についてきかれますが、「A」を選んでおくといいでしょう。

問題なければ、profile.ps1を読み込んで、起動します。
あと、root.pvk、root.cerは、削除しておきましょう。