Question Recherche une partie de chiffres dans l'attribut DepartmentNumber

Plus d'informations
il y a 1 an 2 mois #32958 par Julien
Effectivement, je manque encore de précisions dans ma réponse.
Le departmentNumber peut partiellement correspondre au budget en entrée mais uniquement avec un 0 manquant à gauche quand il n'a que 4 chiffres.
Exemples : 1020 au lieu de 01020
8530 au lieu de 08530
On ne trouvera jamais d'autres situations ici qu'un 0 manquant à gauche dans le departmentNumber du collaborateur.
Soit son code est complet type 07845 et là pas de souci ou alors il sera de la forme 7845 et là, mon code ne le considère donc pas comme équivalent et il ne ressortira jamais dans la liste des collaborateurs ayant comme code budget 07845 (par exemple). Seuls seront trouvés malheureusement ceux pour lesquels le departmentNumber est strictement égal au budget passé en entrée.

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

Plus d'informations
il y a 1 an 2 mois #32959 par Laurent Dardenne
Peut être procéder ainsi :
$Users=@(
 [PsCustomObject]@{Name='Un';departmentNumber="";department="06570"}
 [PsCustomObject]@{Name='Deux';departmentNumber="";department="6570"}
 [PsCustomObject]@{Name='Trois';departmentNumber="06570";department=""}
 [PsCustomObject]@{Name='Quatre';departmentNumber="6570";department=""}
 [PsCustomObject]@{Name='Cinq';departmentNumber="06370";department="0657"}
 [PsCustomObject]@{Name='Six';departmentNumber="";department=""}
)


$Budget='06570'
Function Edit-DepartmentNumber{
#Complète un code de service d'un employé.
# Todo doc
 param([string]$DepartmentNumber)
    [string] $departmentNumber=$_.departmentNumber

    Switch ($departmentNumber.Length) 
    {
         #0 manquant à gauche quand il n'a que 4 chiffres.
      4 { return "0$departmentNumber" }
          
       #Format correct sur 5 chiffres
      5 { Return $departmentNumber }
 
       #TODO comportement à valider, dans ce cas soit une info soit une erreur
      default { Write-Debug "La forme du code budget '$departmentNumber' n'est pas géré."}
    }
}
#$DebugPreference='continue'
$Users|% {
    $departmentNumber=Edit-DepartmentNumber -DepartmentNumber $_.departmentNumber
    $department=Edit-DepartmentNumber -DepartmentNumber $_.department
    Write-Debug "Test departmentNumber : '$departmentNumber'"
    Write-Debug "Test department : '$department'"
    if  ($departmentNumber -match $Budget -or $department -match $Budget)
    { Write-Warning "Code match: $_" }
    else
    { Write-Warning "Code NOT match $_" }
}

Le code est verbeux mais à mon avis facilite la compréhension des specs aussi simple soient-elles.
Ensuite la volumétrie peut peut-être inciter à l'optimiser...

Tutoriels PowerShell

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

Plus d'informations
il y a 1 an 2 mois #32964 par Laurent Dardenne
Une correction de la fonction Edit-DepartmentNumber, lorsque son paramètre $DepartmentNumber est une chaine vide on doit retourner une chaîne vide.
Et dans le cas où son contenu contient des caractères qui ne sont pas des chiffres, on ne le sait pas. Mais ce n'est pas dans l'énoncé du problème d'origine...

Tutoriels PowerShell

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

Plus d'informations
il y a 1 an 2 mois #32973 par Julien
Bonjour Laurent,

Je te remercie pour ta dernière proposition, j'ai pu la tester avec succès sur mon script avec un budget test.

Je vais maintenant tenter d'optimiser compte tenu du volume de budgets possibles.

Merci beaucoup

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

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