问题标签 [powershell-provider]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Powershell Provider - GetItem 路径错误 - 自定义文件作为驱动器
我正在尝试将我的自定义项目文件模拟为新的 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
使用不存在的路径(文件本身除外),只使用将像路径一样手动处理的字符串?
c# - 从自定义提供程序的 C# 代码加载 Powershell 模块
我一直在研究一个非常具体的功能“需要”以绑定到我用 C# 编写的自定义提供程序。
基本上我开始寻找一种方法来复制
etc 函数在 PowerShell 加载时定义,因此不必键入
你可以做前面提到的
我首先尝试让我的提供程序将函数注入运行空间,但似乎我完全错过了如何让它工作的时机,所以我走了另一条路。
基本上我有一个非常简单的 PSM1 文件 UseColons.psm1
简单来说,它遍历所有加载的提供程序,然后遍历每个提供程序的所有驱动器,然后检查 Function: 驱动器是否包含与 {DriveName}: 格式匹配的函数,如果找不到,则创建一个。
psd1文件无非就是导出所有函数
这存储在其自己的文件夹下的 %ProgramFiles%\WindowsPowerShell\Modules 路径中
最后我在 %windir%\system32\windowspowershell\v1.0 目录下有 profile.ps1
因此,当我加载 PowerShell 或 ISE 时,如果我想通过变量说 dir,我可以调用
或者如果我需要切换回注册表
当您与多个供应商合作时,您在切换时一遍又一遍地键入该 CD,这很烦人。
现在到了这个问题,我仍在努力开发最初打算用于的实际 PowerShell 提供程序。但是,当我调试它时,UseColons 模块会在 Visual Studio 转身之前加载并加载新的提供程序,因此如果我手动删除并再次导入该模块,它会完成它的工作,并且我拥有我的提供程序的所有驱动功能。
经过漫长的解释后,我想知道我该怎么做:
我不想将它从我的标准配置文件中删除,因为当我不使用新的提供程序并且只是使用 powershell 进行管理工作时,它非常有用。
希望有人能给我一些想法或指出一些好的更深入的 powershell 提供程序文档和操作方法的方向。
powershell - Powershell“提供程序执行已停止,因为提供程序不支持此操作。”
我正在尝试编写一个脚本来通过 FriendlyName 检查远程服务器的证书。一旦返回,我想确认删除此证书。目前,下面的代码返回“提供程序执行已停止,因为提供程序不支持此操作。” 为什么提供程序在 Remove-Item cmd 期间不工作,但在我使用 Select-Object 时在脚本的早期工作?