目次

概要

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}

更新履歴

ブログ