#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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS