#author("2019-01-21T02:36:26+09:00","default:ryuichi","ryuichi")
#author("2019-01-21T02:40:39+09:00","default:ryuichi","ryuichi")
* Start-Processでps1スクリプトを起動する [#dcb1407c]
** 問題 [#sedd04ef]
PS> Start-Process ./foo.ps1
- 上のようにps1スクリプトをStart-Processで起動しようとしても、メモ帳で開いてしまうことがある。
- それは.ps1拡張子が関連付けが実行になっていないから。
** 解決方法 1 レジストリの関連付けを変更 [#y04a3628]
- このような関連付けをするには所定のレジストリを設定する。
- レジストリエディタを開く。
- HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shellを開く。
- ps1スクリプトがメモ帳で開くようであれば、この(既定)の値が "Open" になっているはずなので、これを "0" に変える。0が実行。
- これでps1スクリプトが実行されるようになる。
*** 参考 [#yccade86]
https://devadjust.exblog.jp/22696383/
** 解決方法 1-a ウィンドウを閉じなくする [#r47b5482]
- しかし、この通りに実行すると、新しいウィンドウが開いて、すぐに閉じてしまう。
- ウィンドウを閉じなくするには、レジストリで実行設定を変える。
- レジストリエディタを開き、HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\0\Commandを開く。
- (既定)の値がpowershell.exeを呼び出しているので、(略)powershell.exe" "-NoExit" "-Command" (略) のように、powershell.exeの後に"-NoExit"を追加する。
- これでps1スクリプトを実行するとウィンドウが閉じなくなる。
*** 参考 [#be3f2958]
http://www.vwnet.jp/windows/w10/2015121601/ExtendRightClickMenu.htm
** 解決方法 2 powershell.exeの引数にps1スクリプトを指定する [#g862852d]
PS> Start-Process powershell.exe -ArgumentList "-NoExit -file ./foo.ps1"
- 上のように、直接foo.ps1を指定せずにpowershell.exeの引数として指定する。
*** 参考 [#t76a78b3]
https://stackoverflow.com/questions/12041122/problems-using-start-process-to-call-other-powershell-file
** 解決方法 3 invoke- [#wf6ceaa1]
*** 参考 [#v40c4da7]
https://devadjust.exblog.jp/22696383/
** 参考 [#paa05d76]
https://stackoverflow.com/questions/12041122/problems-using-start-process-to-call-other-powershell-file