WMI
хорошо в отношении тестируемости, потому что есть много (нативных / .NET / script ...), которые могут быть использованы для тех же задач, сравнения результатов и т. д.
Что по моему опыту может быть довольно сложным, так это развертывание / настройка в отношении безопасности / связи и т. Д.
System.DirectoryServices.AccountManagement
По моему опыту очень прост в использовании и развертывании ... для компьютера разработчика вы можете (жертвуя некоторыми более тонкими аспектами) использовать тот же код и при необходимости протестировать его с локальными пользователями / группами. Что касается производительности, этого обычно более чем достаточно, но его можно немного изменить в зависимости от ваших потребностей (специальные запросы AD в сравнении с постоянным соединением и т. Д.).
Если когда-нибудь возникнет необходимость не только запрашивать, но и создавать / изменять пользователей / группы и т. Д., Это легко сделать ...
Я не использовал System.Security.Principal много, поэтому не могу много говорить об этом ... более актуальная часть .NET System.DirectoryServices.AccountManagement и работает очень хорошо: -)