Je souhaite voir si un nom d'affichage est partagé par plusieurs comptes.
J'utilise le code (Get-ADUser -Filter {displayname -like $ name}). Count .
Cela produit parfois le résultat correct et parfois aucun résultat. Tous les comptes sont correctement configurés sans espaces à la fin de leurs noms.
3 Réponses :
Vous pouvez utiliser le code suivant:
Get-ADUser -Filter {displayname -like $name} | measure | select -ExpandProperty Count
En effet, lorsqu'un seul utilisateur est renvoyé, il n'est pas traité comme une collection mais comme un objet utilisateur unique.
Utilisation de la mesure ( Measure-Object ) vous permet de contourner cela.
Si aucun utilisateur n'est renvoyé, vous obtiendrez 0 , si un seul est renvoyé, vous obtiendrez 1 et si plusieurs utilisateurs sont renvoyés, vous obtiendrez le nombre réel d'utilisateurs. p>
Le problème est que lorsqu'il n'y a qu'un seul résultat, un seul objet est renvoyé, pas une collection. Étant donné que l'objet ne contient pas de propriété .Count , votre instruction ne retournera rien.
Vous pouvez forcer la sortie dans une collection en utilisant le littéral de tableau ( @ () code >)
(@(Get-ADUser -Filter {displayname -like $name})).Count
Ce qui précède renverra toujours le décompte de la collection, même s'il y a un ou zéro résultat.
Ansgar,
Est-ce que cela ferait ce que vous voulez?
$Filter = "displayname -like $name" (Get-ADUser -Filter $Filter).Count
Il semble que je me souvienne que les applets de commande n'aiment pas les variables dans la syntaxe du filtre. p >
Comment ça marche en utilisant -match plutôt que -like?
@ I.TDelinquent pas,
Filterest traduit en un filtre LDAP en interne, et les filtres de requête LDAP ne prennent pas en charge l'expression régulièreQuelle est la valeur de
$ name?$ name est le nom complet des utilisateurs, c'est-à-dire "John Smith"
Ensuite, vous ne trouverez que des correspondances exactes. Vous devez ajouter des caractères génériques
*au début et / ou à la fin de la chaîne pour les correspondances partielles.