【发布时间】:2014-02-24 02:01:36
【问题描述】:
我正在尝试将我的自定义项目文件模拟为新的 PS Drive。我正在尝试创建源自NavigationCmdletProvider 的自定义Powershell Provider。我已经覆盖 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 可以使用不存在的路径(文件本身除外),只使用将像路径一样手动处理的字符串吗?
【问题讨论】:
标签: c# powershell powershell-provider