Question Ajouter colonne "restored" et écrire "ok ou "nok dans un fichier csv en sortie

Plus d'informations
il y a 3 mois 2 semaines #32551 par Julien
Bonjour,

Non j'avoue ne pas avoir tout saisi de ton code exposé.
Je suis en revanche parti de ta proposition :

$Resultat=$ListeDEL |GObject SamAccountName

Je me retrouve bien pour Amara Anieze, par exemple, avec deux item de type "count" dans $Resultat tels que :

Count =8 -> contient les 8 comptes identiques
Count =1-> contient un compte unique pour elle

A partir de la, je ne sais pas comment faire pour dire :

Pour chaque "item" de count
Si count supérieur à 1 faire ça...
Si count égal 1 faire ça...

Je ne parviens à faire que :
Foreach($user in $Resultat){

Ce qui ne correspond pas a mon besoin car la boucle va analyser de nouveau chaque utilisateur dans $Resultat alors que j'ai besoin d'analyser la situation du Count et ainsi restaurer une fois l'utilisateur du Count supérieur à 1 et une fois l'utilisateur du count égal à 1 si existant.
Je peux avoir des cas où je n'aurai qu'un utilisateur avec un count supérieur à 1 ou égal à 1 ou bien les deux.

Comment m'y prendre ?

Je suis vraiment désolé pour ces échanges, mais j'ai vraiment besoin de réussir ce bout de code.
Merci beaucoup pour ton aide

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 mois 2 semaines - il y a 3 mois 2 semaines #32552 par Laurent Dardenne
>>Je me retrouve bien pour Amara Anieze, par exemple, avec deux item de type "count" dans $Resultat
Non, $Resultat contient un tableau d'objet de type Microsoft.PowerShell.Commands.GroupInfo.
Et cette classe à 4 propriétés dont 'Count' (cf. Get-Member).

>>Ce qui ne correspond pas a mon besoin car la boucle va analyser de nouveau chaque utilisateur dans $Resultat
Certes, Group-Object doit lire l'intégralité d'une collection AVANT de regrouper selon un critère.
On a désormais une autre collection qui regroupe des utilisateurs, on est bien obligé d'avoir un résultat intermédiaire.

>> alors que j'ai besoin d'analyser la situation du Count et ainsi restaurer une fois l'utilisateur du Count supérieur à 1 et une fois l'utilisateur du count égal à 1 si existant.
Ici on manipule des groupes, chaque groupe indique le nom d'utilisateur identique, selon les critères, et les données dupliquées sont dans la propriété 'Group' qui est une collection d'utilisateurs:
$Groups=$Accounts|group-object SamAccountName
$UnGroupe=$groups[0]
$UnGroupe.Count # 1 ou n
$UnGroupe.Name #Critère
$UnGroupe.Group[0] # Utilisateur(s) identique(s) POUR le critère

Pour filtrer :
$list=@{SamAccountName = 'a.anieze';userPrincipalName = 'amara.anieze'},
@{SamAccountName = 'a.anieze';userPrincipalName = 'amara.anieze'},
@{SamAccountName = 'B.anieze';userPrincipalName = 'amara.Bnieze'},
@{SamAccountName = 'B.anieze';userPrincipalName = 'amara.Cnieze'},
@{SamAccountName = 'F.anieze';userPrincipalName = 'amara.Fnieze'}

$Accounts=$list |% {
[PscustomObject]$_
}

Foreach ($CurrentUserGroup in $Accounts|Group-Object SamAccountName)
{
switch ($CurrentUserGroup.Count)
{
1 { Write-host ("{0} n'est pas dupliqué." -F $CurrentUserGroup.Name) }
default { Write-host ('{0} dupliqué {1} fois.' -F $CurrentUserGroup.Name,$CurrentUserGroup.Count) }
#Une évidence : pas de groupe ayant un count à zéro
}
}

Tutoriels PowerShell
Dernière édition: il y a 3 mois 2 semaines par Laurent Dardenne.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 mois 1 semaine #32559 par Julien
Bonjour Laurent,

Merci pour tes explications détaillées. J'ai bien mieux compris ce que tu as proposé et ça m'a bien aidé.
À priori tout fonctionne bien pour le moment.

Merci pour tes conseils.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.048 secondes
Propulsé par Kunena