gpt4 book ai didi

c# - 如何从您的应用程序中向 PowerShell 公开功能

转载 作者:太空狗 更新时间:2023-10-29 21:25:54 24 4
gpt4 key购买 nike

我正在收听有关 PowerShell 2.0 的播客 that Scott Hanselman did .在那一集中,他们讨论了扩展您的应用程序以公开 PowerShell 功能的可能性。

现在这听起来很有趣。你们有没有做过这样的扩展,在您的应用程序中公开功能?如果是这样,什么样的功能?

编辑:更准确地说:我对在我的应用程序中托管 PowerShell 不感兴趣。我对使用类似 API 的界面打开我的应用程序更感兴趣。因此,PowerShell 提供程序似乎是我正在寻找更多见解的技术。

最佳答案

有多种方法可以在自定义应用程序中利用 PowerShell。 PowerShell Automation 引擎的美妙之处在于,您不必处理处理参数、格式化输出和一堆您必须自己处理的其他 PITA 事情。要在 PowerShell 中将对象扔到管道中,您可以重写 ProcessRecord 方法并调用 WriteObject

protected override void ProcessRecord()
{
// Get the current processes
Process[] processes = Process.GetProcesses();

// Write the processes to the pipeline making them available
// to the next cmdlet. The second parameter of this call tells
// PowerShell to enumerate the array, and send one process at a
// time to the pipeline.
WriteObject(processes, true);
}

您可以编写允许管理员自动化应用程序服务器端的 Cmdlet。 Cmdlet 始终是基于任务的功能单元,具有动词-名词命名约定。例如,Get-Process 或 Restart-Service。 Cmdlet 只做一件事,而且做得很好。将 cmdlet 组合在一起会产生各种不可思议的力量。

此外,如果您的应用程序有某种数据存储,也可以编写一个提供程序,允许某人使用 cd(设置位置)和 md(新项目)等命令浏览和/或管理数据存储).提供者是 PS 团队编写的内容,因此您可以使用 cd hklm: 进入注册表或使用 cd cert: 进入证书存储:

您还可以在您的应用程序中托管 PowerShell 本身。

在 MSDN here 上有关于所有这三个选项的一些很好的信息

考虑到对提供商的兴趣,这里有一些关于 how to create a PowerShell Provider. 的例子

已经有一些关于设计和使用一组 cmdlet 或使用 Provider 公开某些内容的讨论。实现提供者时,您还会获得一些 cmdlet,例如 Get-item、New-item、Get-Location、Set-Location。但是,我发现除了提供程序之外,还有一些用于特定任务的 cmdlet 会非常有帮助。

关于c# - 如何从您的应用程序中向 PowerShell 公开功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/887924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com