C# 通过web服务封装Windows管理:WMI/RPC、WinRM或PowerShell?

C# 通过web服务封装Windows管理:WMI/RPC、WinRM或PowerShell?,c#,windows,powershell,wmi,winrm,C#,Windows,Powershell,Wmi,Winrm,我正在编写一个RESTAPI,它封装了一些常见的Windows管理任务(DNS/DHCP管理、终端会话等)。我不想使用PowerShell Web服务,因为我不想在API中使用OData。我试图找出在后端执行远程管理命令的最有效方法 据我所知,有以下几种选择: 通过RPC的WMI,使用System.Management。还有Microsoft.Management.Infrastructure,但它似乎被锁定在Windows 8/2012 R2及以上版本,这对我来说不适用。显然,这不是最友好的

我正在编写一个RESTAPI,它封装了一些常见的Windows管理任务(DNS/DHCP管理、终端会话等)。我不想使用PowerShell Web服务,因为我不想在API中使用OData。我试图找出在后端执行远程管理命令的最有效方法

据我所知,有以下几种选择:

  • 通过RPC的WMI,使用System.Management。还有Microsoft.Management.Infrastructure,但它似乎被锁定在Windows 8/2012 R2及以上版本,这对我来说不适用。显然,这不是最友好的防火墙,可能被MS认为是遗留的,但可能是最快的协议

  • WSMAN上的WMI,使用类似的方法。从协议的角度来看,这更符合MS当前的想法,但对于更复杂的返回集,XML解析可能会很痛苦

  • PowerShell远程处理,这可能会产生可读性最高的代码(在创建PowerShell会话之后),最终会产生一些(通用)对象,但这似乎是最慢的方法,因为启动PowerShell会话需要时间


我遗漏了什么吗?我使用System.Management是否在倒退?

您的具体目标是什么?参考第一个选项,您希望维护早于Win8的系统-尽可能快。Thought关于在服务器/目标系统上提供自己的服务?一个单一的、基于REST的界面来管理Windows,这样我就可以在非Windows环境(移动、Linux)中构建灵活的客户端工具。为通信目的添加“助手服务”似乎只是添加了另一层管理,我仍然需要使用上面的方法之一来完成这项工作。我建议使用WMI而不是RPC。它比PowerShell适用于更多的系统,速度快,适应性强。。。首先,我认为您希望在客户机上构建它。