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