Functionプロバイダかっけえ
Functionプロバイダで存在する関数の情報にアクセスできる
たとえば、
> function Foo(){ "test" }
って関数を定義して、
> gci function: | ?{ $_.Name -eq "Foo" } | fl -property *
で
PSPath : Microsoft.PowerShell.Core\Function::Foo PSDrive : Function PSProvider : Microsoft.PowerShell.Core\Function PSIsContainer : False HelpUri : ScriptBlock : "test" CmdletBinding : False DefaultParameterSet : Definition : "test" Options : None Description : Verb : Noun : HelpFile : OutputType : {} Name : Foo CommandType : Function Visibility : Public ModuleName : Module : RemotingCapability : PowerShell Parameters : {} ParameterSets : {}
こうなる。
このgci、要はファイルシステムのlsコマンドと同じでしょと思ってたら、任意のプロバイダを想定してたのか。この抽象化面白い。
Aliasプロバイダ、Certificateプロバイダ(デジタル証明書?)、Environmentプロバイダ(環境変数)、FileSystemプロバイダ、
Functionプロバイダ、Registryプロバイダ、Variableプロバイダもあるよ!
FileSystemだと
PS E:\Documents > cd c:\hoge\fuga PS C:\hoge\fuga >
とするのと同様、Registryプロバイダだと
PS E:\Documents > cd HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer PS HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer>
こうできる。続けざまに、
PS HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer> gci | %{ $_.PSChildName } Advanced AppContract AutoplayHandlers BitBucket CabinetState ... VisualEffects Wallpaper Wallpapers WordWheelQuery SessionInfo
とレジストリのサブキーを調べたり、
PS HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer> gp . ExplorerStartupTraceRecorded : 1 ShellState : {36, 0, 0, 0...} UserSignedIn : 1 SIDUpdatedOnLibraries : 1 ... PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\Current Version PSChildName : Explorer PSDrive : HKCU PSProvider : Microsoft.PowerShell.Core\Registry
とレジストリのエントリを調べたりできる