Инкапсуляция управления Windows через веб-сервисы: WMI/RPC, WinRM или PowerShell?
Я пишу REST API, который включает в себя некоторые общие задачи управления Windows (управление DNS/DHCP, сеансы терминала и т. Д.). Я не хочу использовать PowerShell Web Services, так как мне не нужна OData в моем API. Я пытаюсь выяснить, как наиболее эффективно выполнять команды удаленного управления на серверной части.
Насколько я могу сказать, варианты:
WMI через RPC, используя System.Management. Есть также Microsoft.Management.Infrastructure, но, похоже, она привязана к Windows 8/2012 R2 и выше, что мне не подходит. Очевидно, что это не самый дружественный к брандмауэру и, вероятно, считается устаревшим MS, но, вероятно, самый быстрый протокол.
WMI через WSMAN, используя такой подход, как Как получить доступ к WinRM в C#. Это больше соответствует текущему мышлению MS с точки зрения протокола, но анализ XML может быть болезненным с более сложными возвращаемыми наборами.
PowerShell Remoting, это, вероятно, дает наиболее читаемый код (после создания сеанса Powershell), и вы получаете некие (общие) объекты, но это кажется самым медленным методом из-за времени, которое требуется для ускорения Сессия PowerShell.
Я что-то пропустил? Собираюсь ли я сделать шаг назад, используя System.Management?