Почему я выбрал бы Powershell вместо WMI для разработки интерфейсов управления?
Мы обсуждаем развитие улучшенной инфраструктуры управления для нашей распределенной системы. Мы используем COM, веб-сервисы и компоненты.NET. Так как мы основаны на Microsoft Windows Server XP/2003, я думаю, у нас есть два варианта:
- Командлеты Powershell
- Классы WMI с использованием System.Management и поставщиков WMI для собственного кода (класс, экземпляр, метод, событие)
Почему мы выбрали Powershell вместо WMI?
4 ответа
Я бы выбрал PowerShell вместо WMI по следующим причинам:
- Написание командлета - это только добавление класса.NET.
- Среда выполнения PowerShell обеспечивает встроенный анализ командной строки.
- Написание интерфейса управления в PowerShell позволяет администраторам интегрировать управление вашим приложением с другими приложениями и службами (такими как Exchange, Active Directory или SQL Server).
- Среда PowerShell делает конвейер доступным для администраторов, что позволяет более эффективно выполнять задачи управления для вашего приложения.
- Понятность. PowerShell, используя Get-Command, Get-Member и Get-Help, предоставляет администраторам чрезвычайно удобную среду для работы, что приводит к сокращению времени обучения для поддержки вашего приложения.
Даже если вы идете по маршруту WMI, PowerShell действительно поддерживает работу с WMI (хотя есть несколько глюков).
Для меня PowerShell - это лучший способ создания ориентированного на задачу интерфейса приложения. Благодаря поддержке, которую Microsoft предоставляет PowerShell, она является и будет последовательным интерфейсом для управления приложениями и службами в масштабах всего предприятия.
Моя дневная работа - это администратор, и я подталкиваю всех поставщиков, с которыми я работаю, к выходу на интерфейс API управления PowerShell, поскольку это значительно снижает эффективность обучения и переключения контекста для управления приложениями. Что касается разработки, я написал (и продолжаю работать над) серию командлетов PowerShell для одного продукта с открытым исходным кодом, с которым я работаю и работаю над другим набором для отдельного приложения.
Джеффри Сновер отвечает на вопрос "почему PowerShell" здесь. Пост находится в контексте SQL, но очень применим здесь.
Я не уверен, что приму решение. Это не совсем или... или... вы можете сделать и то и другое.
WMI может потребляться множеством разных вещей, а не только PowerShell. Почему бы не написать инструментарий управления в PowerShell, а затем обернуть этот WMI в некоторые ориентированные на задачи командлеты, чтобы упростить работу администраторов? Это то, что некоторые команды разработчиков MS выбирают, особенно когда у них есть другие потребители WMI, которых они хотят продолжать поддерживать.
Если у вас уже есть подходящий код.NET, то превратить его в командлет может быть быстрее, чем превратить его в поставщика WMI. Если дело обстоит именно так, и скорость - это проблема, то пойдем с тем, что проще. Но независимо от того, что вы делаете, вы всегда можете поместить его в командлет PowerShell для администраторов, что, безусловно, является рекомендуемым подходом.
Не уверен, что на это можно ответить информацией, которую вы предоставили до сих пор. Мне кажется, что вы должны использовать powershell, поскольку, похоже, у вас уже есть некоторый код.Net. Но это действительно зависит только от того, что вы пытаетесь сделать.