きの実施をIPropertyCmdletProviderのインタフェースユー Cmdlet?
-
20-09-2019 - |
質問
私は書く NavigationCmdletProvider のためのユー.を通じて GetItem や GetChildItems オーバーライド、さまざまな種類がありの物を記録することはありますが、そのパイプライン
のドキュメントのための IPropertyCmdletProvider インタについて教えてください:
開発者が実施するべきであるこ 面で以下の 条件:
- ユーザーが必要cmdletsなどの物性および設定-財産 cmdlets.
- のためのプロバイダからItemCmdletProvider, ContainerCmdletProvider、 NavigationCmdletProviderます。
混乱:
ない有用な情報がたくさん私の意見ではどのように、ユーザーに知らせい 必要 の物性および設定-財cmdletす。このことになるのCmdlet。大きな混乱(私にとって少なくとも)の場合はCmdletを書き込みオブジェクトのパイプライン;およびそれらのオブジェクトの性質が露出する呼び出し可能オブジェクト(get/set);特典にはどのようなものは呼び出しの取得-施設-財産して操作するオブジェクトに直接?
質問
どのような場合は、IPropertyCmdletProvider面するデータエスクローエージェント
いい何かが足りない!せれば大変ありがたいと思っていまぞよろしくお願い申し上げます。
解決
うわー、これらのドキュメントは少し古いです。何のget / set-プロパティコマンドレットはありません。これは取得/設定-ItemPropertyコマンドレットを参照する必要があります。それは、レジストリ値にアクセスするための唯一の方法であるため、RegistryProviderの場合には、これらのコマンドレットは不可欠です。これは、Get-項目/ ChildItemコマンドレットコマンドレットのみのRegistryKeyオブジェクト、決してレジストリ値のオブジェクトを(彼らは.NETには存在しない)を返す、です。あなたは、レジストリキーの下で、特定のregvalsを取得/設定するために取得/設定-ItemPropertyを使用する必要があります。
FileSystemプロバイダーOTOHあなたは直接コンテナ(のdirs)と葉(ファイル)にアクセスすることができます。あなたは直接ファイルの内容を取得することができます。あなたはファイルのLastWriteTimeを取得したい場合でも、あなたは-ItemPropertyを取得し使用することができます:
PS> Get-ItemProperty -Path .\DotNetTypes.format.ps1xml -Name LastWriteTime
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Win
dows\System32\WindowsPowerShell\v1.0\DotNetT
ypes.format.ps1xml
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Win
dows\System32\WindowsPowerShell\v1.0
PSChildName : DotNetTypes.format.ps1xml
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
LastWriteTime : 4/24/2009 11:21:46 AM
しかし、私は通常、このような方法でこのプロパティにアクセスしません。私は、出力が詳細にする方法です見つけます。私はこれを行うだろう。
PS> (Get-Item .\DotNetTypes.format.ps1xml).LastWriteTime
Friday, April 24, 2009 11:21:46 AM
あなたはRegistryProviderのアプローチを取ることができますが、FileSystemプロバイダーが行ったルートを行けばあなたはイースリー直接返されるオブジェクトのプロパティにアクセスすることができますので、それはあまり重要でない場合は、のガイダンスについては、私はあなたが本当にこのインタフェースを実装する必要があると言うでしょうGet-アイテム別/ ChildItemコマンドレットます。