Résolu boucle qui ne va pas au de-delà de 8 répétitions

Plus d'informations
il y a 9 mois 6 jours #33432 par gertrude
Bonjour !

Nouveau sujet, je suis face à une nouvelle problématique. J'ai ce script qui fonctionne, sauf quand je mets un chiffre supérieur ou égale à 9 : dans ce cas, en console, ça ne va que jusqu'à Vague8 au maximum...
J'ai tenté de demander son "avis" à chatgpt, mais il sèche...
Avez-vous des idées ?

# importer dans une variable le planning du WSUS, classer par ordre alphabétique de la colonne Client
$tabClientsRanked = Import-Csv -Path "chemindufichier.csv" -Delimiter ";" | Select-Object Client, Week | Sort-Object -Property @{Expression="Client";Ascending=$true}

# demander un nombre de cycle de MAJ
$nbWave = Read-Host "Indiquer un nombre de vagues de rotation à effectuer"

# créer une boucle de 1 à $nbWave, avec un pas de 1 à chaque tour de boucle
for($i=1; $i -le $nbWave; $i++){
    # ajouter une propriété à chaque objet qui s'appelle Vague$i
    $tabClientsRanked | Add-Member -MemberType NoteProperty -Name "Vague$i" -Value $null
}

# afficher la variable avec les propriétés ajoutées
$tabClientsRanked | Format-Table

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

Plus d'informations
il y a 9 mois 5 jours #33434 par Arnaud Petitjean
Bonjour Gertrude !

La cause vient très probablement du fait que Read-Host retourne toujours un String.

Il faut toujours convertir le résultat de la saisie en nombre entier. Tout simplement en faisant ceci :
[int] $nbWave = Read-Host "Indiquer un nombre de vagues de rotation à effectuer"

Essaye et tiens nous au courant 

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

Plus d'informations
il y a 9 mois 5 jours #33435 par gertrude

Il faut toujours convertir le résultat de la saisie en nombre entier


Oui, dans un autre sujet tu me  l'as dit, mais les habitudes ont la vie dure 
J'ai ajouté [int] comme suggéré, mais je n'ai en affichage que 8 colonnes supplémentaires...

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

Plus d'informations
il y a 9 mois 5 jours - il y a 9 mois 5 jours #33437 par Arnaud Petitjean
Il me semblait bien que c'était toi à qui j'en avais parlé ! 

Bizarre car chez moi ça fonctionne bien... :

[int]$nbWave = Read-Host "Indiquer un nombre de vagues de rotation à effectuer"

# créer une boucle de 1 à $nbWave, avec un pas de 1 à chaque tour de boucle
for($i=1; $i -le $nbWave; $i++){
    "Vague$i"
}


~/temp> ./test.ps1
Indiquer un nombre de vagues de rotation à effectuer: 5

Vague1
Vague2
Vague3
Vague4
Vague5

~/temp> ./test.ps1
Indiquer un nombre de vagues de rotation à effectuer: 10

Vague1
Vague2
Vague3
Vague4
Vague5
Vague6
Vague7
Vague8
Vague9
Vague10

 

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Dernière édition: il y a 9 mois 5 jours par Arnaud Petitjean. Raison: Amélioration de la mise en forme

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

Plus d'informations
il y a 9 mois 5 jours - il y a 9 mois 5 jours #33438 par gertrude

# importer dans une variable le planning du WSUS, classer par ordre alphabétique de la colonne Client
$tabClientsRanked = Import-Csv -Path "chemindufichier.csv" -Delimiter ";" | Select-Object Client, Week | Sort-Object -Property @{Expression="Client";Ascending=$true}

# demander un nombre de cycle de MAJ
[int]$nbWave = Read-Host "Indiquer un nombre de vagues de rotation à effectuer"

# créer une boucle de 1 à $nbWave, avec un pas de 1 à chaque tour de boucle
for($i=1; $i -le $nbWave; $i++){
    # ajouter une propriété à chaque objet qui s'appelle Vague$i
    $tabClientsRanked | Add-Member -MemberType NoteProperty -Name "Vague$i" -Value $null
}

# afficher la variable avec les propriétés ajoutées
$tabClientsRanked | Format-Table


Voici en pièce-jointe le résultat en console quand j'exécute le script.
Pièces jointes :
Dernière édition: il y a 9 mois 5 jours par gertrude.

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

Plus d'informations
il y a 9 mois 5 jours #33439 par Arnaud Petitjean
C'est juste une question d'affichage lié à Format-Table. Car par défaut, PowerShell ne te retourne jamais toutes les propriétés d'un objet.

ajoute un * après ta commande Format-Table pour demander à PowerShell de t'afficher toutes les propriétés.

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Les utilisateur(s) suivant ont remercié: gertrude

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

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