Script PowerShell Pour vérifier l'état des comptes d'utilisateurs est activé ou désactivé à l'aide d'un fichier texte qui a des noms (prénom et nom)
J'essaie de déterminer si un compte d'utilisateur est activé ou désactivé en annonce Liste des utilisateurs qui est un fichier texte à l'aide de PowerShell. P>
J'ai essayé d'obtenir le code pour récupérer les noms d'une liste d'utilisateurs dans un fichier texte et vérifiez si leurs comptes sont activés ou désactivés en publicité. Mais le code ci-dessous donne un message d'erreur. P>
Get-Content -Path users.txt | ForEach-Object { Get-ADUser -LDAPFilter "(samaccountname=$_)" | Select-Object -Property samaccountname,enabled }
3 Réponses :
Si votre liste est au format "Prénom Nom Nom", vous pouvez essayer ceci:
$ResultList = Get-Content -Path users.txt | ForEach-Object { Get-ADUser -LDAPFilter "(anr=$_)" | Select-Object -Property samaccountname,enabled } $ResultList | Export-Csv -Path C:\temp\Results.csv -NoTypeInformation
Cela dépendrait également de la précision des données d'entrée. Jusqu'au bout pour décider.
Non, pas même ça. ANR reviendra des matchs partiels. La documentation décrit comment cela le fait. Disons que vous avez un "John James" et un "James Johnson" dans votre organisation. Si vous recherchez (anr = john James) code>, il reviendra à la fois, même si vos données d'entrée sont exactes et que seule une correspondance exacte.
Je ne dis pas que l'ANR ne doit pas être utilisé. C'est juste quelque chose que l'OP doit être au courant.
Comment puis-je exporter le même au format CSV? Je suis fatigué Get-Content -Path Users.txt | Foreach-objet {get-aduser -ldapfilter "(anr = $ _)" | Select-Object -Property SamaccountName, activé | Exportation-csv "résultats.csv"} mais ça ne fonctionne pas
Voir au dessus. Assurez-vous que le chemin du dossier existe lorsque vous exportez
Si les noms du fichier texte se comparent à la propriété displayName de vos utilisateurs de publicité, vous pouvez le faire: Si vous n'êtes pas sûr des noms correspondant à la propriété displayName, peut-être Divirant les valeurs en premier et une autre idée peut être une autre idée: p>
à condition que les utilisateurs.txt ne contiennent qu'une liste des prénoms et des noms de famille un seul espace séparé, vous pouvez procéder comme suit:
switch -Regex -File users.txt { '^(\S+)\s(.*)$' { Get-ADUser -Filter "GivenName -eq '$($Matches[1])' -and Surname -eq '$($Matches[2])'" | Select-Object SamAccountName,Enabled } }
La regex que vous utilisez n'est-ce toutefois pas ne correspond pas à la nomination de deux mots avec deux mots ou plus comme Pepe ay y Olé code> par exemple ..
Les prénoms pourraient également avoir le même problème. Un meilleur délimiteur devrait être utilisé pour faire face à ce problème. Si nous ne nous soucions que des espaces de nom de famille, le deuxième groupe de capture pourrait simplement devenir . * Code>.
Est-ce que
users.txt code> contient une liste de SamAccountName? Quel est exactement le message d'erreur?