質問: Windows7 64bit環境です。 Microsoft.PowerShell_profile.ps1 ファイルを用意して、 Import-Module をしています。 ``` Set-ExecutionPolicy RemoteSigned ``` を管理者権限で実行して、スタートメニューから PowerShell を起動したときに、モジュールが読み込み済みの状態になりました。 そしてこのモジュールを使う setting.ps1 ファイルを作成し ``` CreateObject("WScript.Shell").Run "powershell.exe ~\setting.ps1",1 ``` という ps1 ファイルをキックする VBS ファイルを作成し、 エクスプローラーから実行すると正常に動作することを確認しました。 別のアプリに外部ファイルを実行する機能があり、このVBSを呼び出すようにしたのですが、 ``` スクリプトの実行がシステムで無効になっているため、ファイル ~\マイ ドキュメント\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 を読み込めません。詳細については、「get-help about_signing」と入力してヘルプを参照してください。 発生場所 行:1 文字:2 + . <<<< '~\マイ ドキュメント\WindowsPowerShell\Microsoft.PowerShell_profile.ps1' + CategoryInfo : NotSpecified: (:) []、PSSecurityException + FullyQualifiedErrorId : RuntimeException ``` というエラーになってしまいます。 PowerShell 単体が起動するようにして、 Get-ExecutionPolicy を確認してみましたが、 Restricted でした。 実行ポリシーはユーザー毎に管理なのでしょうか? ただ、上記の別のアプリも同じユーザーで起動しています。 マシン全体、または該当ユーザーで PowerShell を起動したときに、共通したポリシーが適用されるようにするにはどうしたらよいのでしょうか?
回答: Twitterで教えて頂きました。 32bit、64bitで設定が異なるそうです。 ``` Get-ExecutionPolicy -List ``` でポリシーの一覧が確認できるのですが、 スタートメニューから起動した PowerShell と PowerShell(x86) で比べてみたところ、 x86の方では設定が反映されていませんでした。 x86側でも ``` Set-ExecutionPolicy RemoteSigned ``` を実行して解決。 質問にあった「別のアプリ」が32bit版だったため、このような動きになっていたようです。