Почему я выбрал бы Powershell вместо WMI для разработки интерфейсов управления?
-
06-07-2019 - |
Вопрос
Мы обсуждаем развитие улучшенной инфраструктуры управления для нашей распределенной системы. Мы используем COM, веб-сервисы и компоненты .NET. Так как мы основаны на Microsoft Windows Server XP / 2003, я думаю, у нас есть два варианта:
<Ол>Почему мы выбрали Powershell вместо WMI?
Решение
Я бы выбрал PowerShell вместо WMI по следующим причинам:
<Ол>Даже если вы идете по маршруту WMI, PowerShell поддерживает работу с WMI (хотя есть несколько глюков).
Для меня PowerShell - это лучший способ создать ориентированный на задачи интерфейс для приложения. Благодаря поддержке, которую Microsoft предоставляет PowerShell, она является и будет последовательным интерфейсом для управления приложениями и службами в масштабах всего предприятия.
Моя дневная работа - это администратор, и я подталкиваю всех поставщиков, с которыми я работаю, к выходу на рынок API-интерфейса управления PowerShell, поскольку это значительно снижает кривую обучения и переключение контекста для управления приложениями. Что касается разработки, я написал (и продолжаю работать над) серию командлетов PowerShell для одного продукта с открытым исходным кодом, с которым я работаю и работаю над другим набором для отдельного приложения.
Другие советы
Джеффри Сновер отвечает на вопрос "почему PowerShell"? здесь . Пост находится в контексте SQL, но очень применим здесь.
Я не уверен, что приму решение. Это не совсем то или другое ... вы можете выбрать оба варианта.
WMI может потребляться разными способами, а не только PowerShell. Почему бы не написать инструментарий управления в PowerShell, а затем обернуть этот WMI в некоторые ориентированные на задачи командлеты, чтобы упростить работу администраторов? Это то, что некоторые команды разработчиков MS выбирают, особенно когда у них есть другие потребители WMI, которых они хотят продолжать поддерживать.
Если у вас уже есть подходящий код .NET, его преобразование в командлет может быть быстрее, чем в поставщика WMI. Если дело обстоит именно так, и скорость - это проблема, то пойдем с тем, что проще. Но независимо от того, что вы делаете, вы всегда можете поместить его в командлет PowerShell для администраторов, что, безусловно, является рекомендуемым подходом.
Не уверен, что на это можно ответить информацией, которую вы предоставили до сих пор. Мне кажется, что вы должны использовать powershell, поскольку, похоже, у вас уже есть некоторый код .Net. Но это действительно зависит только от того, что вы пытаетесь сделать.