

Windows7 64bit環境です。  
Microsoft.PowerShell_profile.ps1 ファイルを用意して、 Import-Module をしています。

[code]

    Set-ExecutionPolicy RemoteSigned
    
[/code]

を管理者権限で実行して、スタートメニューから PowerShell を起動したときに、モジュールが読み込み済みの状態になりました。

そしてこのモジュールを使う setting.ps1 ファイルを作成し

[code]

    CreateObject("WScript.Shell").Run "powershell.exe ～\setting.ps1",1
    
[/code]

という ps1 ファイルをキックする VBS ファイルを作成し、  
エクスプローラーから実行すると正常に動作することを確認しました。

別のアプリに外部ファイルを実行する機能があり、このVBSを呼び出すようにしたのですが、

[code]

    スクリプトの実行がシステムで無効になっているため、ファイル ～\マイ ドキュメント\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 を読み込めません。詳細については、「get-help about_signing」と入力してヘルプを参照してください。
    発生場所 行:1 文字:2
    + . <<<<  '～\マイ ドキュメント\WindowsPowerShell\Microsoft.PowerShell_profile.ps1'
        + CategoryInfo          : NotSpecified: (:) []、PSSecurityException
        + FullyQualifiedErrorId : RuntimeException
    
[/code]

というエラーになってしまいます。  
PowerShell 単体が起動するようにして、 Get-ExecutionPolicy を確認してみましたが、  
Restricted でした。

実行ポリシーはユーザー毎に管理なのでしょうか？  
ただ、上記の別のアプリも同じユーザーで起動しています。

マシン全体、または該当ユーザーで PowerShell を起動したときに、共通したポリシーが適用されるようにするにはどうしたらよいのでしょうか？


CC BY-SA 3.0
2015-04-10T09:12:55.247
9005
2016-01-27T11:52:30.923
2016-01-27T11:52:00.763
8000
2605
question
powershell
PowerShellの実行セキュリティポリシー設定方法


Twitterで教えて頂きました。  
32bit、64bitで設定が異なるそうです。

[code]

    Get-ExecutionPolicy -List
    
[/code]

でポリシーの一覧が確認できるのですが、  
スタートメニューから起動した PowerShell と PowerShell(x86) で比べてみたところ、  
x86の方では設定が反映されていませんでした。

x86側でも

[code]

    Set-ExecutionPolicy RemoteSigned
    
[/code]

を実行して解決。  
質問にあった「別のアプリ」が32bit版だったため、このような動きになっていたようです。


CC BY-SA 3.0
2015-04-10T09:52:04.820
9008
2016-01-27T11:52:30.923
2016-01-27T11:52:30.923
8000
2605
9005
answer