加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在应用程序中向PowerShell公开功能

发布时间:2020-12-15 08:14:41 所属栏目:百科 来源:网络整理
导读:我正在收听有关Power Shell 2.0 that Scott Hanselman did的播客.在那一集中,他们讨论了扩展应用程序以展示PowerShell功能的可能性. 现在这听起来很有趣. 你有没有做过这样的扩展,在你的应用程序中公开功能? 如果是这样,什么样的功能? 编辑: 更确切地说:
我正在收听有关Power Shell 2.0 that Scott Hanselman did的播客.在那一集中,他们讨论了扩展应用程序以展示PowerShell功能的可能性.

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

编辑:
更确切地说:我对在我的应用程序中托管PowerShell不感兴趣.我更感兴趣的是使用类似API的界面打开我的应用程序.因此,PowerShell提供商似乎是我正在寻求更多洞察力的技术.

解决方法

在自定义应用程序中有多种方法可以利用PowerShell. PowerShell自动化引擎的优点在于您无需处理处理参数,格式化输出以及您必须自己处理的其他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组合在一起会带来各种令人难以置信的强大功能.

此外,如果您的应用程序具有某种数据存储,则还可以编写一个提供程序,允许某人使用cmd(如cd(set-location)和md(new-item))浏览和/或管理数据存储.提供者是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可能非常有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读