Comment puis-je savoir quelles Unités de l'Organisation, un ordinateur fait partie d'? ( Active Directory C# )
Je veux trouver la plus spécifique OU mon ordinateur appartient à en C#.
J'ai un code qui vous permettra d'obtenir les informations dont j'ai besoin, mais il ne semble pas solide et on aurait besoin de compliqué l'analyse.
Sont t-il de meilleures solutions de rechange? Pensées? Toute aide est appréciée!
Vraiment ce que je veux, c'est un équivalent à l'invite de commande:
dsquery computer -name COMP-HERE
Mais j'en ai besoin en C#, qui se révèle être problématique.
DirectorySearcher d = new DirectorySearcher("CN=COMP-HERE");
d.PropertiesToLoad.Add("adspath");
SearchResultCollection results = d.FindAll();
foreach (SearchResult searchResult in results) {
foreach (string propertyKey in searchResult.Properties.PropertyNames) {
ResultPropertyValueCollection valueCollection = searchResult.Properties[propertyKey];
foreach (Object propertyValue in valueCollection) {
Console.WriteLine(
"{0}:{1}",
propertyKey,
propertyValue.ToString());
}
}
}
Console.ReadLine();
OriginalL'auteur user1507986 | 2012-08-01
Vous devez vous connecter pour publier un commentaire.
Voici une solution à l'aide de
PrincipalContext
etComputerPrincipal
dans leSystem.DirectoryServices.AccountManagement
espace de nomsLinq traitement de la machine, le nom unique de la divise en c'est des éléments qui la composent, ignore tous les éléments avant le premier
OU=...
élément, puis recompose le reste., vous laissant avec le nom unique de l'contenant de l'unité d'organisation.Plus D'Infos
Les classes de l'
System.DirectoryServices.AccountManagement
espace de noms de fournir un assez haut niveau d'abstraction de différents types d'entités de sécurité (comptes).La
PrincipalContext
est fondamentalement une abstraction du compte de dépôt. Il peut se référer à une machine de la base de données de compte (PrincipalType.Machine
), un domaine Active Directory ou de Catalogue Global (PrincipalType.Domain
), ou une Application Active Directory partition (PrincipalType.ApplicationDirectory
).new PrincipalContext(ContextType.Domain)
crée unPrincipalContext
représentant local de domaine Active Directory.Une fois que nous avons ce contexte, nous pouvons utiliser le
FindBy...()
méthodes statiques sur les divers types principaux (peut êtreUserPrincipal
,ComputerPrincipal
ouGroupPrincipal
) pour trouver l'objet de l'ANNONCE, nous sommes à la recherche pour.Voir la réponse de mise à jour
Aucune raison pour que l'utilisation de SkipWhile plutôt que de Où?
Je ne peux pas upvote vous de nouveau (en fait je ne peux pas upvote vous parce que je n'ai pas assez de réputation), de sorte que vous aurez à vivre avec mes remerciements. Vous êtes génial et cela a été une très positif de la première question-posté le-expérience sur la pile d'échange pour moi.
Dans ce cas, le résultat final est fondamentalement la même, mais pour ce genre de chose
SkipWhile
est plus efficace.Where
va appliquer le test à chaque élément de la séquence, alors queSkipWhile
seuls les tests des éléments jusqu'à ce qu'il trouve celui qui échoue le test, puis les transmet simplement les autres éléments de la séquence directement à la séquence de sortie.OriginalL'auteur Andrew Cooper
J'ai fait une simple recherche sur google et trouvé beaucoup d'informations sur cette. Je pense que vous êtes dans la bonne direction, peut-être comparer votre code avec ces liens:
Comment obtenir la liste de l'Unité d'Organisation dans Active Directory
ou ici sur un débordement de pile
OriginalL'auteur Jean-François Côté
C'est ce qui a fonctionné pour moi
OriginalL'auteur P.Brian.Mackey