Windows PowerShell 5.1とそれよりも古いバージョンのヘルプ
PowerShell系のドキュメントは次のサイトにまとまっている。最新のドキュメントはこのようにオンラインでアクセスできる状態になっており、基本的にはこのサイトの情報を確認するというのが正しいアプローチということになる。
PowerShellにはヘルプコマンドレットが用意されており、PowerShellの中でも似たようなドキュメントを表示させることができる。このヘルプはリリースごとにアップデートされており、バージョンと一致するようになっている。しかし、常に最新の状態になっているわけではない。時にはPowerShellに同梱されているドキュメントが古く、上記サイトの情報とは食い違っていることもある。
PowerShellはPowerShell 3.0のときにヘルプドキュメントを更新可能な仕組みへ変更した。ヘルプドキュメントは自分でも更新することが可能だ。ただし、さまざまな理由から、PowerShell Core 6.0がリリースされて以降は、Windows PowerShell 5.1およびそれよりも前のバージョンのヘルプに関しては、更新したものが提供されない状態になっている。要するに、Windows PowerShellのヘルプは古い状態になってしまっている。
このヘルプは、手動にはなってしまうが、自分でビルドすればアップデートすることができる。その手順がMicrosoftから発表された。PowerShell Coreではなく5.1、またはそれよりも前のバージョンのWindows PowerShellを使う必要がある場合、次のドキュメントを参考にヘルプをアップデートすることができる。
今回は上記ドキュメントをなぞるかたちで、Windows PowerShell 5.1のヘルプをアップデートする方法を紹介する。
Linuxを用意
まず、作業を開始するためにLinux環境を用意しておく。どのディストリビューションでもよいのだが、ほとんどデフォルトだと言える「Ubuntu 18.04 LTS」を選択しておけばよいと思う。
この環境でgitコマンドが実行できることを確認しておく。インストールされていない場合は、インストールしておこう。
WSLで動作するLinux環境とWindowsはシームレスに結びついている。Linux系のコマンドは個別にWindows版をインストールして利用するよりも、こんな感じでまるごとLinuxをインストールして使うほうがよいと思う。
PowerShell-Docsリポジトリを取得
gitコマンドが利用できる環境が整ったら、次のようにgitコマンドを実行してPowerShellのドキュメントのリポジトリをコピーする。
wsl git clone https://github.com/MicrosoftDocs/PowerShell-Docs.git --depth 1
「wsl git」という使い方で、Linux側のgitコマンドが実行される。次のように「PowerShell-Docs」というフォルダが作成されることが確認できるはずだ。
PowerShell-Docsフォルダ以下にドキュメントデータがまとまっていることを確認できる。
これは今回の作業に限ったことではないのだが、WSLで動作するLinuxのコマンドは、Windows側からはwslコマンドを使うことで利用できる。いちいちLinuxのシェルを操作することなく、まるでWindowsで動作するコマンドのようにLinuxのコマンドを使える便利な方法なので、ぜひ活用してもらえればと思う。
ヘルプをビルド
PowerShell-Docsには「build-updatedhelp.ps1」というビルドスクリプトが含まれており、このスクリプトを実行することで対象バージョンのドキュメントをビルドすることができる。サンプルは以下の通りだ。
.\PowerShell-Docs\tools\build-updatedhelp.ps1 -sourceFolder .\PowerShell-Docs\reference\5.1 -Verbose
このコマンドを実行すると、次のようにビルドが行われる。
ドキュメントのビルドが完了すると、PowerShell-Docsフォルダの下に次のように「updatablehelp」というフォルダが新しく作成される。ここに生成されたヘルプデータが収められている。
ヘルプをインストール
ここまで用意したら、後はUpdate-Helpコマンドレットを使ってビルドしたヘルプデータをインストールする。ただし、Windows PowerShell 5.1、またはこれよりも前のバージョンでこの処理を行うには管理者権限が必要だ。管理者権限付きの状態でWindows PowerShellのコンソールを起動し、次のようにUpdate-Helpコマンドレットを実行する。
Update-Help -SourcePath .\PowerShell-Docs\updatablehelp\5.1 -Recurse -Force
ただし、対象となるヘルプが足りていないと、次のようなワーニングも表示される。日本語環境であればなおさらだ。
「PowerShell Documentation」にアクセスすればよいだけの話ではあるのだが、せっかくヘルプをアップデートする仕組みが用意されているのだ。Windows PowerShellをよく使うのであれば、一度この方法でヘルプをアップデートしてみてはどうだろうか。