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


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

Last-modified: 2019-01-21 (月) 02:40:39