我正在尝试将我的自定义项目文件模拟为新的 PS Drive。我正在尝试创建派生自NavigationCmdletProvider的自定义Powershell 提供程序。我已经覆盖 PSDriveInfo 以从文件中读取和包含项目,并且文件路径位于 PSDriveInfo 的根目录中。
我无法正确覆盖 GetItem。我想做的是使用GetNamesFromPath(path, out tableName, out rowNumber)
方法。由于我的自定义项目基本上是数据集,我想使用 tableName 来获取 DataRow 的 ID 的 DataTable 和 rowNumber。
问题是我得到“路径不存在”的错误。它不会进入被覆盖的方法。我是否缺少要覆盖的东西?文件路径实际上并不存在,但我只需要处理路径并将 WriteItemObject 与我想要的对象一起使用,而不检查它是否有效路径。
编辑 1:我注意到的一件事是它永远不会进入GetItem
并因此进入IsValidPath
. 当我调试和使用断点时,首先我加载驱动器,然后调用Set-Location
驱动器IsItemContainer
(它必须被覆盖Set-Location
才能工作)。
GetItem
并且IsValidPath
根本不被调用,就好像它在调用重写方法之前检查有效路径一样。可以NavigationCmdletProvider
使用不存在的路径(文件本身除外),只使用将像路径一样手动处理的字符串?