c# - 在项目自定义 ContainerCmdletProvider 上设置位置

标签 c# powershell provider

我正在尝试在 c# 中创建一个自定义 powershell 提供程序,它允许您管理项目(在文件夹类型目录中)用户应该能够 cd 到 --> 文件/文件夹并能够看到子项目等操纵它。 我的问题是我总是可以前往根目录,但是一旦我尝试将我的位置设置为 myAcme:/any_path_here_of_valid_item,它就会出错,如下所示。这很奇怪,因为我可以在这条路径上获取项目。我是不是在这里误解了什么,还是无法将您的位置设置为该项目的位置(我正在尝试将我的位置设置为该项目以获取其子项目)

PS my****:\> cd myAcme:/
PS myAcme:\> get-item /files/folders/****
<Removed so you don' get hit by a wall of text but this displays the items info fine>
PS myAcme:\> cd myAcme:/files/folders/****
Set-Location : Cannot find path 'myAcme:/files/folders/****' because it does not exist.
At line:1 char:3
+ cd <<<<  myAcme:/files/folders/****
    + CategoryInfo          : ObjectNotFound: (myAcme:/files/folders/****:String) [Set-Location], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand

我现在不打算在这里显示任何代码,因为我很确定我很可能没有理解 containercmdletprovider 的概念

编辑 当我执行命令 cd myAcme:/files/folders/**

时,我忘记在调试器中添加 ItemExists 返回 true

最佳答案

ContainerCmdletProvider 仅适用于没有子文件夹的简单提供程序。此类提供程序的示例是 PowerShell 中的 functionenvvariable 驱动器。此类提供程序不支持 set-locationget-location (cd) 或嵌套路径的概念。一切都应该在根中,并且必须是叶节点(例如文件。)

如果要使用树结构,必须继承自NavigationCmdletProvider。如果您使用我的脚本化提供程序框架,您可能会发现开发起来更容易,它允许您使用常规 PowerShell 脚本非常快速地制作提供程序原型(prototype)。在 http://psprovider.codeplex.com/ 上有一些示例和简单的文档,以及下载。

祝你好运!

关于c# - 在项目自定义 ContainerCmdletProvider 上设置位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11794207/

相关文章:

c# - 现有连接被 WCF 中的远程主机强行关闭

c# - 如何在 C# 中锁定一个整数?

c# - 异步正在成为背后的痛苦,因为我正在尝试制作一个不会吸吮的可重用库

c# - 在对象中转换匿名类型并检索一个字段

firebase - Flutter>提供程序> Firebase/错误:在构建CheckoutPage时引发了以下RangeError

flutter - 更改项目状态后如何更新列表? ( flutter 和提供者)

Powershell从多个文件创建对象

powershell - 在 ubuntu 机器上使用 powershell 获取 SSL 证书到期日期

powershell - 使用 PowerShell 在更改时复制文件

javascript - 如何动态注册RPC提供者?