06:55OS初期化後の環境の再構築を自動化しようOSを初期化したあとの環境再構築をスクリプトで自動化する本企画。後編となる今回は、アプリのインストール以外にもよく必要となりそうな処理を、スクリプトで自動化していきたいと思います。いえ、これ以上バッチファイルを書きたくはないので、本稿からは「PowerShell」を利用していきます。前回作成したバッチファイルとの連携は、最後に説明することにしましょう。10の環境変数エディター。改善されたとはいえ、GUIでの編集はやっぱり面倒わざわざ「Chocolatery」を使ってアプリをインストールしなくても、ポータブルアプリをオンラインストレージへまとめておけば簡単に元のアプリ環境を復元できます。アップデートが面倒である点を除けば、なかなか便利な方法と言えるでしょう。その場合にやっておきたいのが、いわゆる“パスを通す”という作業です。ポータブルアプリのフォルダーを環境変数“PATH”に書き込んでおくことで、フルパスを渡さなくても実行ファイル名だけでアプリを起動できるようになります。Framework」のAPIを利用します。“C:¥PortableApps¥”に保存した「Foo」アプリのフォルダーにパスを通すには、以下のようにします。'Machine')“Machine”を“User”に換えれば、システムの環境変数ではなくユーザーの環境変数を書き換えることができます。このスクリプトを実行するには管理者権限が必要です。書き換えた環境変数を「PowerShell」へ反映させるには、「PowerShell」を再起動させる必要があります。シンボリックリンクを張る最近のWindowsでは、[Windows]+[PrintScreen]キーでデスクトップをキャプチャーし、“C:¥Users¥(ユーザー名)¥Pictures¥Screenshots”フォルダーにファイルとして保存できます。筆者の場合、これを「OneDrive」でクロスデバイス共有しておきたいので、“Screenshots”フォルダーを“OneDrive¥Screenshots”フォルダーへのシンボリックに置き換えています。すれば、[Windows]+[PrintScreen]キーで保存されたスクリーンショットが「OneDrive」で同期されます。"$Home\OneDrive\Screenshots"なお、このスクリプトを実行するには管理者権限が必要です。コマンドレットの名前が“***-Folder”ではなく“***-Item”となっているのは、フォルダー・ファイル以外にもレジストリなどを総合的に扱えるからのようですね。慣れればセットアップスクリプトで任意のフォルダー・ファイルを作成したり、リンクを張ったり、自分の使いやすいようにフォルダー構造を変更できます。機能の有効化または無効化)を使いますが、これもスクリプトで行えます。「WSL」の場合は以下の通りです。-Online”を使います。このスクリプトを実行するには管理者権限が必要です。OSの再起動が必要になることがあるので、セットアップスクリプトの最後の方に記述し、完了後は一旦再起動するようにした方がよいでしょう。「WSL」をスクリプトでセットアップする前項で「WSL」をスクリプトで有効化する方法を紹介しましたが、WSL/Linuxディストリビューションのインストールもスクリプトで行えます。16.04」の場合は以下の通り。10では「curl」がサポートされていますので、「curl」でアプリパッケージ(*.appx)をダウンロードし、“Add-AppxPackage”コマンドレットでシステムに追加します。.\ubuntu-1604.appxちなみに、現在サポートされているディストリビューションとその取得先は以下の通りです。WSL:https://github.com/WhitewaterFoundry/WSLFedoraRemix/releases/適宜URLを置き換えて、試してみてください。Hanselman氏が直伝するインポート・エクスポート方法が参考になるでしょう。窓の杜VPNをセットアップする会社によっては、リモート勤務のためにVPNをセットアップしなければならないことがあるかもしれません。これもGUIで行うよりも、「PowerShell」スクリプトで行った方が手軽でしょう(キーやURL、認証方式などは環境に合わせて変更してください)。-Forceユーザー名とパスワードまでは登録できないのが残念ですが、平文でスクリプトに書いておくべきものでもないので仕方ないですね。まとめ以上、環境の再構築時によく行いそうなセットアップ処理をいくつかピックアップして紹介してみました。これをPowerShellスクリプト(“Setup.ps1”など)にまとめておけば、次回からは環境構築の手間を大幅に省くことができるでしょう。前編で作成した(管理者権限で起動済みの)バッチファイルからキックする(バッチファイルを呼び出す)ようにしておけば、管理者権限でスクリプトを実行するのを忘れることもありません。"すべての処理が完了しました。"PAUSEなお、今回示したのはサンプルに過ぎません。エラーを十分に考慮していなかったり、もっとよい方法もあるでしょう。公開しても差し支えのないものでしたら、“GitHub”などで共有していただけると、他のユーザーの助けにもなると思います。