概要
PowerShell では、 ファイルシステム、レジストリ、環境変数なんかの項目を、 どれも同じコマンドで操作できます。
Get-PSDrive Cmdlet
> Get-PSDrive
Name Provider Root
---- -------- ----
Alias Alias
C FileSystem C:\
cert Certificate \
D FileSystem D:\
Env Environment
Function Function
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
Variable Variable
PowerShell 中で定義したエイリアス、関数、変数すらも、ファイルシステムと同じ構文でアクセス可能。
> ls variable:* Name Value ---- ----- Error {} DebugPreference SilentlyContinue 後略
パスの書き方 [<プロバイダ>::]<ドライブ>:[\<コンテナ>[\<サブコンテナ>...]]\<項目>
特殊文字 . .. \
環境変数が取りたければ ls env:* で出来るし、 レジストリの項目を cd HKCU:\Software\Microsoft\Windows と探索可能。
環境変数とかは、以下のような構文で、あたかも変数のようにアクセス可能。
> $env:windir
C:\WINDOWS
${C:\Users\Public\test.txt} みたいなのでファイルの中身を読み書きできるのも同じ原理みたい。
こういう、ファイルシステム以外もファイルシステムと同様の扱いするための機構を提供するのがプロバイダらしい。
> Get-PSProvider
Name Capabilities Drives
---- ------------ ------
Alias ShouldProcess {Alias}
Environment ShouldProcess {Env}
FileSystem Filter, ShouldProcess {C, D}
Function ShouldProcess {Function}
Registry ShouldProcess {HKLM, HKCU}
Variable ShouldProcess {Variable}
Certificate ShouldProcess {cert}