PowerShell+WPFが動かない場合の原因と対策
仕事の関係でPowerShellを使ったので、PowerShellでの勉強内容と作成プログラムを記事に書きましたが、本番で動かず、困ってしまいました。同様の問題で困っている方がいるかもしれないので、解決先を書きます。
問題点
- スクリプトがネットワークドライブ上にあるとエラーとなる。
- PowerShell ISEでは動作するが、PowerShellではエラーとなる。
原因と解決方法
- スクリプトがネットワークドライブ上にあるとエラーとなる。
- 原因:スクリプトがネットワークドライブ上にあると、リモートスクリプト(ネットワークから入手したスクリプト)とみなされエラーとなる。
- 対策:powershellにオプション付加「powershell -ExecutionPolicy Bypass」
- 別案:「powershell -file ファイル名」で起動(2/18追記)
- PowerShell ISEでは動作するが、PowerShellではエラーとなる。
- 原因:powershellの古いバージョン(1.0と2.0)のPowerShellのデフォルトはMTAモードになっている。なお、PowerShell ISEは、古いバージョン(1.0と2.0)でもSTAモードで動作している。
- 対策:powershellにオプション付加「powershell -sta」
まとめ
PowerShellは、スクリプトがネットワークドライブにあるか、どのバージョンか、PowerShellかPowerShell ISEか、によって動作が異なるので注意が必要。]
- 対策:「powershell -sta -ExecutionPolicy Bypass ファイル名」で起動。
- 別案:「powershell -sta -file ファイル名」で起動(2/18追記)。