Windwos の PackageManagement を使ってみる

今回のゴール

PowerShell の PackageManagement を使って、パッケージ管理できるようにする。

はじめに

Windows 10 からは、PowerShell のモジュールとして PackageManagement という パッケージ管理システム がデフォルトで入っているらしい。

ちょうどクリーンインストールしたところだし、それを使って環境構築してみることにする。

ちなみに、win10 より前のバージョンでも、 Windows Management Framework 5.0 とやらを入れれば利用できるようです。

(この記事内では、PowerShell のコマンドを記載するとき可読性のため大文字小文字書きわけてますが、PowerShell 自体は大文字小文字区別しないので、実際に打つ際は全部小文字でも問題ありません。)

手順

  • PowerShellの設定

  • PackageProviderの追加・確認

  • パッケージ(アプリケーション) の検索・追加・確認・削除

PowerShellの設定

PowerShellのスクリプト実行に関するポリシーを変更する。

PowerShell を 管理者として実行する で起動。

現在の設定を確認

1
> Get-ExecutionPolicy

初期値は Restricted (全てのスクリプト実行禁止) になっている。

設定を変更

1
> Set-ExecutionPolicy RemoteSigned

ポリシーを RemoteSigned (署名付きのスクリプトとローカルに保存されているスクリプトの実行を許可)へ変更する。

ポリシーの意味やその他の設定値に関しては、下記参考サイトなど詳しく書いてある。

参考: WindowsでPowerShellスクリプトの実行セキュリティポリシーを変更する - @IT

PackageProviderの追加・確認

PackageManagement では、パッケージの配布元を PackageProvider という形で管理して、そこ経由でパッケージを取得してくる。

で、この PackageProvider として、Windowsのパッケージ管理システムとして定番の Chocolatey が利用できる。

なので、とりあえず Chocolatey を PackageProvider として追加する。

利用できる(未登録の) PackageProvider 一覧

1
> Find-PackageProvider

PackageProvider 登録

1
> Get-PackageProvider Chocolatey

登録済み PackageProvider 一覧

1
> Get-PackageProvider

パッケージ(アプリケーション) の検索・追加・確認・削除

なんとなく nodist で試してみる。

パッケージの検索

1
> Find-Package -name nodist

パッケージのインストール

1
> Install-Package -name nodist

アプリケーション付属のインストーラーを裏で実行しているだけっぽい?

インストール済みパッケージ一覧

1
> Get-Package

パッケージのアンインストール

1
> Uninstall-Package -name nodist

こちらもどうやらアプリケーション付属のアンインストーラーが起動しているだけっぽい?ので、アプリケーションごとに挙動が違ったりする。

ちなみにものによってこれだけではアプリケーション本体は消えないものがあるんで、そういったものはこれに加え通常のアンインストール手順で消してあげる必要がある。

おわりに

これである程度のアプリケーションを Package Management で管理できるようになりました。

通常のGUIインストーラーからインストールするときに選べるインストールオプションが、この方法でインストールするとすべてデフォルト設定になるっぽくて、例えば Git for Windows とかは個人的にインストール時の設定をある程度変えたいので、そういうアプリケーションにはちょっと使いづらい感じ。逆にインストールオプションがあんまり無いようなor重要じゃないアプリケーションはこっちのほうが断然楽だと思います。

まだちょっと触った感じですが、便利は便利だと思うので、なんか「いい感じ」の付き合い方を見つけたいです(windowsのbashはまだしばらく微妙そうだし・・・)。

参考URL

余談

PowerShellデフォルトの、エラー出力が赤字黒背景なのがなんかもうとにかく苦手で、とりあえずそこの設定の変更だけ調べたのでついでにメモ。

下記ファイルが .bashrc 的な存在になるっぽいので作成。

1
%UserProfile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

そこに下記の内容を記述。

1
2
$host.privatedata.errorbackgroundcolor = "DarkMagenta"
$host.privatedata.errorforegroundcolor = "Yellow"

これで心の平穏は保たれた・・・