PowerShell:環境構築を(なるべく)自動化する

執筆日時:

Windows 10 は[回復]オプションで割と簡単に初期化できるので、なんか調子悪くなったときは気軽にキレイサッパリにしているのだけど、そのあとの環境構築を毎回手動でやるのがいい加減かったるいので、できるだけスクリプトでできんもんかなーと考えてみた。

ウチは OS をわりとプレーンな状態で使う派なので、実はやることがそんなにないんだけど、それでも以下のことが必要っぽかった。

これだったら自分の PowerShell 力でもなんとかなると思った。

Write-Host "STEP 0: Set-ExecutionPolicy を RemoteSigned に書き換えます……"

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned Write-Host ""

Write-Host "STEP 1: chocolatey をセットアップしています……"

if (Test-Path "C:\ProgramData\chocolatey") { Write-Host "すでにインストールされています。" } else { iex ((New-Object System.Net.WebClient).DownloadString(‘https://chocolatey.org/install.ps1’)) # Get-PackageProvider -name chocolatey Write-Host "インストールが完了しました。" }

Write-Host ""

Write-Host "STEP 2: ソフトウェアをインストールしています……"

choco install -y paint.net choco install -y sizer choco install -y dotnetcore-sdk choco install -y visualstudiocode choco install -y dropbox choco install -y vlc

# Nullsoft Install System Start-Process -FilePath "$Home\OneDrive\Apps\WinSnap_4.5.8-setup.exe" -ArgumentList "/S" # Advanced Installer Start-Process -FilePath "$Home\OneDrive\Apps\emed64_16.7.2.exe" -ArgumentList "/quiet"

Write-Host ""

Write-Host "STEP 3: シンボリックリンクを作成しています……"

Write-Host "Picture\Screenshots -> OneDrive\Screenshots" Set-Location "$Home\Pictures" Remove-Item "Screenshots" New-Item -Type SymbolicLink -Path "Screenshots" -Value "$Home\OneDrive\Screenshots"

Write-Host ""

Write-Host "セットアップが終了しました。キーを押すと終了します。" $host.UI.ReadLine()

このスクリプトを管理者権限で起動すればよいのだけど、PowerShell のコンテキストメニューには[管理者権限で実行する]コマンドはないんだな。バッチファイルならあるのに。

f:id:daruyanagi:20170517072412p:plain

――というわけで、スクリプトをキックするためのバッチファイルも書いた。

@powershell -NoProfile -ExecutionPolicy RemoteSigned -File "C:\Users\Hideto\OneDrive\Initialize.ps1"

f:id:daruyanagi:20170517072704p:plain

Surface 3 を初期化してテストした後に、デスクトップ PC でも試してみたのだけど、choco install -y dropbox が失敗して面倒くさいことになった*1以外は、割とスムーズにいった。

実は以前からところどころを自動化していたのだけど、ちゃんとメンテナンスすればいろいろ楽になるかなーと思った。Windows ストアからのインストールもコマンドでできたらいいんだけど……かつて「OneGet」で Windows ストアをプロバイダーにできるようになるとか聞いた覚えがあるんだが、どうなったんだろう。

*1:利用したバージョンのオフラインインストーラーがどうにも動かない。Web インストーラーをダウンロード&実行して解決