カスタム プロジェクト ファイルを新しい PS ドライブとしてエミュレートしようとしています。NavigationCmdletProviderから派生したカスタムPowershell プロバイダーを作成しようとしています。ファイルからプロジェクトを読み取って含めるように PSDriveInfo をオーバーライドしました。ファイルパスは PSDriveInfo のルートにあります。
GetItem を適切にオーバーライドできません。私がやりたいのは、GetNamesFromPath(path, out tableName, out rowNumber)
メソッドを使用することです。私のカスタム プロジェクトは基本的にデータセットであるため、tableName を使用して DataTable を取得し、DataRow の ID として rowNumber を取得したいと考えています。
問題は、「パスが存在しません」という種類のエラーが発生することです。オーバーライドされたメソッドに入ることはありません。オーバーライドするものがありませんか? ファイルパスは実際には存在しませんが、パスを処理し、有効なパスであるかどうかを確認せずに、返されたオブジェクトとして必要なもので WriteItemObject を使用するだけです。
編集 1: 私が気づいたことの 1 つは、GetItem
それがIsValidPath
. ブレークポイントをデバッグして使用するときは、最初にドライブをロードしてSet-Location
からドライブIsItemContainer
を呼び出します (動作させるにはオーバーライドする必要がありますSet-Location
)。
GetItem
IsValidPath
オーバーライドされたメソッドを呼び出す前に有効なパスをチェックするかのように、まったく呼び出されません。存在しないパス (ファイル自体を除く) を処理できNavigationCmdletProvider
ますか?パスと同じように手動で処理される文字列のみを処理できますか?