PowerShellでvagrant upを毎回打つのが面倒くさい → 関数を登録して1発で起動できるようにした。

vagrantを立ち上げるたびに

  1. PowerShellを管理者権限で立ち上げる
  2. カレントディレクトリをvagrantのフォルダに移動する(cdコマンド)
  3. vagrantを立ち上げる(vagrant upコマンド)
  4. vagrantを立ち上げる(vagrant haltコマンド)

という4つの動作をするのが面倒くさい。

特に、カレントディレクトリを移動しなければいけないのが面倒くさい。

vagrant-起動

 

なので、どうにかしようと考えた結果、

  1. PowerShellを管理者権限で立ち上げる
  2. カレントディレクトリをvagrantのフォルダに移動し、vagrantを立ち上げる(vuというコマンドを自作)
  3. カレントディレクトリをvagrantのフォルダに移動し、vagrantを終了する(vhというコマンドを自作)

というように、カレントディレクトリの操作を1つ減らせるようにした。

PowerShellでvagrant upを毎回打つのが面倒くさい → 関数を登録して1発で起動できるようにした。

 

これを行うための方法を順に説明していきます。

まず、LinuxのようにPowerShellにも

  • エイリアス
  • 関数

と呼ばれる機能がある。

これら2つの機能を使うと、例えば  aaaa と打つと

  • 事前に設定しておいた「aコマンド」を実行させる(エイリアス
  • 事前に設定しておいた「aコマンド」「bコマンド」を順番に実行させる(関数)
  • 事前に設定しておいた「aコマンド+引数」「bコマンド+引数」を順番に実行させる(関数)

みたいなことができる。

今回の目的に合っているのは「関数」の方なのでこちらを使う。

 

関数をPowerShellに登録させるには、コンソール上で

function vu{
  cd C:\Users\hamati\OneDrive\vagrant\ubuntu64_18
  vagrant up
}

function vh{
cd C:\Users\hamati\OneDrive\vagrant\ubuntu64_18;
vagrant halt;
}

のような感じで打ち込むだけ。

これであとはvuvhと打ち込むと、上の関数が実行される。(ちなみにエイリアスを登録する場合はSet-Aliasコマンドを使う)

 

ただし、この方法で登録した関数は、PowerShellを終了させると同時に削除されてしまう。

それじゃ意味がない。(同じくエイリアスも終了と同時に削除される)

 

そんなときは、「PowerShellの起動と同時に読み込んでおいてね」なスクリプトファイルに上の内容を書き込んでおく。

そのスクリプトファイルの場所は$profileで指定されている。(Linuxの~/.bashrcのようなファイルです)

$prifile-powershell

▲デフォルトだと、C:\Users\[USER]\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1(PowerShellのバージョンが6.0以上になると変わるらしい?)

なので、 notepad $profileと入力して、開いたメモ帳で

function vu{
  cd C:\Users\hamati\OneDrive\vagrant\ubuntu64_18
  vagrant up
}

function vh{
  cd C:\Users\hamati\OneDrive\vagrant\ubuntu64_18;
  vagrant halt;
}

と打ち込んで保存→PowerShellを再起動すれば、最初からvuvhが実行されるようになる。

これで万事解決。よかったよかった。

ただし、.ps1ファイルはデフォルトではPowerShellで実行できないようになってます。

なぜなら、PowerShellはあまりにも多くのことができてしまうため(レジストリもいじれたりする)、何でもかんでも動かせるとなると非常に危険だからです。

なので、以下を管理者で実行して権限を変更します。

Set-ExecutionPolicy Remotesigned

これでps1ファイルを実行できるようになります。(※一応、自己責任でおねがいします)

 

 

ちなみに、以下のようなコマンドプロンプトファイル

  • vagrant_up.bat
  • vagrant_halt.bat

を作って、このファイルを右クリック → 管理者権限として実行するだけでvagrantを起動・終了できるようにすることも考えたけど

cd C:\Users\hamati\OneDrive\vagrant\ubuntu64_18;
vagrant up;

管理するファイルが増えるのはイヤなので、この方法は却下しました。

 

 

おわり

仮想環境
スポンサーリンク
この記事を書いた人
penpen

1991生まれ。WEBエンジニア。

技術スタック:TypeScript/Next.js/Express/Docker/AWS

フォローする
フォローする

コメント

タイトルとURLをコピーしました