2016-05-26 1 views
0

J'ai un CSV avec des ID d'étudiant qui ont été créés de manière incorrecte. Ils ont l'initiale initiale supérieure, l'initiale inférieure seconde initiale, l'initiale supérieure supérieure. Je dois être capable de trouver ceux-ci dans le csv qui contient environ 4.500 ID d'utilisateur et probablement tout ce qui est dans AD. Je sais comment les renommer et les corriger. J'ai juste besoin de les localiser rapidement sans lire manuellement et localiser chaque nom individuellement. Je suis sûr que cela a à voir avec la recherche d'un tableau [A-Z]^[a-z]^[A-Z] Je viens d'échouer.
Toute aide à ce sujet sera très utile!Utilisation de Powershell pour identifier les ID utilisateur avec des majuscules et des minuscules

Import-Module ac* 
# Student 
Get-AdUser -Filter * -SearchBase "OU=Student, OU=PPS, DC=ad, DC=ppsnet" -Properties GivenName, Surname, EmployeeNumber, SamAccountName, PhysicalDeliveryOfficeName, department | 

`Where {$_.department -like "*KG*" -and $_.SamAccountName -cmatch '(?:[A-Z][a-z][A-Z].*3)'} | Select GivenName, Surname, EmployeeNumber, SamAccountName, PhysicalDeliveryOfficeName, department | 

Export-csv .\Output\Student\Kinders.csv -NoTypeInformation 
+4

Avez-vous un échantillon de l'ensemble de données tel quel, et comment souhaitez-vous qu'il apparaisse? Aussi, pouvez-vous fournir un extrait de ce que vous avez essayé jusqu'à présent, et pourquoi cela n'a pas fonctionné (sortie réelle)? [Ces] (http://stackoverflow.com/help/how-to-ask) détails sont très importants pour vous aider [efficacement] (http://stackoverflow.com/help/mcve). ;) – gravity

+0

Les données telles quelles, est - Susie Jones SuJones1234 J'ai besoin de trouver ces ID utilisateur qui sont comme ça afin que je puisse les renommer en SJones1234 –

Répondre

1

comme mentionné, il n'y a pas assez d'informations encore pour fournir une réponse plus détaillée, mais vous pouvez essayer quelque chose comme ça

$names = @' 
John jacob Jingleheimer 
elaine Hall Ramos 
James Morrison dixon 
Margie Lee Gonzales 
'@.Split("`n") 

$names | % { 
    if ($_.Split(' ') | ? {$_[0] -cmatch '^[a-z]'}) { 
     Write-Output $_ 
    } 
} 

ici est une autre méthode

$names | ? {$_ -cnotmatch '(?:[A-Z].*){3}'} 
+0

J'ai un script standard que j'ai utilisé pour obtenir l'information AD étudiant et ça marche amende d'extraire au .csv les 4.500 comptes de la maternelle. Puis j'ai ajouté une - et une déclaration à mon "Où" et ça n'aime pas ça. Je reçois une erreur qui indique Where-Object: un paramètre ne peut pas être trouvé qui correspond au nom du paramètre 'et' Voici mon script modifié en ajoutant le -et Où {$ _. Department-like "* KG *"} -et {$ _. SamAccountName -match "^ [^ AZ]^[az]^[AZ]" * 3} | Sélectionnez Prénom, Nom, Numéro d'employé, SamAccountName, PhysicalDeliveryOfficeName, department | Export-csv. \ Sortie –

+0

J'ai trouvé le - et dans mon Where-Object, mais il n'est toujours pas d'identifier/trouver le SamAccountName avec l'ID utilisateur majuscule et minuscule mélangé –

+1

d'abord, vous utilisez '-match' . ce que vous voulez utiliser est '-cmatch' pour les cas sensibles. ensuite, '^' dans regex (quand il est utilisé en dehors de '[]') signifie 'début de la chaîne', cela n'a aucun sens d'en avoir plus que le premier au début. vérifiez mon édition pour voir si vous pouvez utiliser '-cnotmatch' et cette expression régulière. –

0

Où {$ .department-like "* KG *" -et $ .SamAccountName -cmatch '(?: [AZ] [az] [AZ]. * 3)'} Cela exportait uniquement les comptes d'utilisateurs il y avait des noms de majuscules, de minuscules et de majuscules, c'est-à-dire SuJones, et il ignorait les SJones.