Convert-Path
PowerShell内では、一見Windowsの普通のパスが使われているように見えるが、実際には、プロバイダー(https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_providers?view=powershell-7.5)と呼ばれるオブジェクトへのアクセスを提供するモジュールを指定する「ドライブ」が併用されている。
ここでは誤解を避けるため、PowerShellのプロバイダーを「PSプロバイダー」、ドライブを「PSドライブ」と表記する。たとえば、ファイルシステムへのアクセスには、「FileSystem」プロバイダーが使われており、「C:」はPSドライブである。
同じ仕組みがレジストリや環境変数にも使われており、それぞれ「Registryプロバイダー」と「Environmentプロバイダー」に対応している。これを指定するためにPSドライブとしてレジストリの「HKLM:」と環境変数の「ENV:」が定義されている。
Convert-Pathは、こうしたPSドライブを使ったパスを、PSプロバイダのパスに変換する。これは、型としては文字列でWindows側での標準的なデータ(オブジェクト)指定表現となる。
たとえば、レジストリ「HKEY_LOCAL_MACHINE\SYSTEM」は、PowerShell内では、PSドライブHKLM:を使って「HKLM:SYSTEM」となる。これをWindowsの標準形式に戻すには、
Convert-Path HKLM:SYSTEM
として、「HKEY_LOCAL_MACHINE\SYSTEM」を得る。
REG.EXEコマンドを使う場合、PSの直接表現では、エラーになる。Convert-Pathで、変換することで外部コマンド(PowerShellの内部コマンドではないもの)であるREG.EXEコマンドが正しく実行できる。
reg query $(Convert-Path HKLM:\SYSTEM)
なお、「FileSystem」プロバイダーは、ドライブ文字に見える部分がPSドライブであるため、文字列のレベルでは、WindowsのパスとPowerShellの内部表現の区別がつかない。このため、そのまま外部コマンドに渡すことができる。
Resolve-Path
Resolve-Path(https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/resolve-path?view=powershell-7.5)は、パスに含まれるワイルドカードを解決して、条件を満たすパスを返す。しかし、使い方としては、ワイルドカードを使って指定した条件を満たすファイル、ディレクトリを配列として得るために使う。
Resolve-Path C:\temp\test.*
このコマンドの出力は、PathInfoなので、プロバイダやプロバイダパスが得られる。
Resolve-Path C:\temp\000-Test\File-type\test.* | select Provider,ProviderPath
Convert-Pathコマンドにもワイルドカードを解決する機能はあるが、出力は文字列(の配列)となる。
PowerShellは、PSプロバイダーにより定義されるPSドライブを使って、ファイルやレジストリ、環境変数などのWindows側のオブジェクトを階層構造を持つパスで指定できるように作られている。ただ、ファイルシステムの操作には違和感はないものの、レジストリなどは、外部コマンドと併用する場合にパスを変換する必要がある。
次回は、パスの相対、絶対を区別するために使われる「作業ディレクトリ」(カレントディレクトリ)と、パスの正当性などについて解説する予定だ。

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ













