Question
Tableau d'objets
- Benjamin
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 12 ans 11 mois #14551
par Benjamin
Tableau d'objets a été créé par Benjamin
Bonjour à tous,
Je suis un grand débutant en PS mais je me débrouille un peu en programmation.
J'ai un petit soucis avec le script suivant:
Je n'arrive pas à ajouter les objets sans écraser le précedent...
[code:1]$items = get-WmiObject Win32_LogicalDisk
$date = (get-date).ToString('yyyyMMdd')
clear
$hostName = (Get-WmiObject win32_operatingSystem).csname
$out = New-Object System.Object
$out | add-member -membertype noteproperty -value \"\" -name dateJour
$out | add-member -membertype NoteProperty -value \"\" -name nomDisque
$out | add-member -membertype NoteProperty -value \"\" -name taille
$outFull = @()
foreach ( $disk in $items ) {
$diskName=($disk.Name).Substring(0,1)
$freeSpace = [math]::round(($disk.freespace / (1024*1024*1024)), 2)
$usedSpace = [math]::round((($disk.size / (1024*1024*1024)) - $freeSpace), 2)
if ($disk.DriveType -lt '4')
{
$nameFree = \"\\$hostname\$diskName (freeSpace)\"
$nameUsed = \"\\$hostname\$diskName (usedSpace)\"
$outFree = $out
$outFree.dateJour = $date
$outFree.nomDisque = $nameFree
$sortieF.taille = $freeSpace
$outFull += $outFree
$outUsed = $out
$outUsed.dateJour = $date
$outUsed.nomDisque = $nameUsed
$outUsed.taille = $usedSpace
$outFull += $outUsed
write-host \"$date $nameFree $freeSpace\"
write-host \"$date $nameUsed $usedSpace\"
}
}
$outFull | export-csv -Delimiter \";\" -path \"rapport-$date.csv\" -notypeinformation
$outFull | ft -AutoSize[/code:1]
Auriez-vous une piste pour m'aider à résoudre mon petit soucis
Ben
Je suis un grand débutant en PS mais je me débrouille un peu en programmation.
J'ai un petit soucis avec le script suivant:
Je n'arrive pas à ajouter les objets sans écraser le précedent...
[code:1]$items = get-WmiObject Win32_LogicalDisk
$date = (get-date).ToString('yyyyMMdd')
clear
$hostName = (Get-WmiObject win32_operatingSystem).csname
$out = New-Object System.Object
$out | add-member -membertype noteproperty -value \"\" -name dateJour
$out | add-member -membertype NoteProperty -value \"\" -name nomDisque
$out | add-member -membertype NoteProperty -value \"\" -name taille
$outFull = @()
foreach ( $disk in $items ) {
$diskName=($disk.Name).Substring(0,1)
$freeSpace = [math]::round(($disk.freespace / (1024*1024*1024)), 2)
$usedSpace = [math]::round((($disk.size / (1024*1024*1024)) - $freeSpace), 2)
if ($disk.DriveType -lt '4')
{
$nameFree = \"\\$hostname\$diskName (freeSpace)\"
$nameUsed = \"\\$hostname\$diskName (usedSpace)\"
$outFree = $out
$outFree.dateJour = $date
$outFree.nomDisque = $nameFree
$sortieF.taille = $freeSpace
$outFull += $outFree
$outUsed = $out
$outUsed.dateJour = $date
$outUsed.nomDisque = $nameUsed
$outUsed.taille = $usedSpace
$outFull += $outUsed
write-host \"$date $nameFree $freeSpace\"
write-host \"$date $nameUsed $usedSpace\"
}
}
$outFull | export-csv -Delimiter \";\" -path \"rapport-$date.csv\" -notypeinformation
$outFull | ft -AutoSize[/code:1]
Auriez-vous une piste pour m'aider à résoudre mon petit soucis
Ben
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 11 mois #14554
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Tableau d'objets
Salut,
crée ton objet $Out dans la boucle et supprime les variables intermédiaires.
Si ton traitement concerne un seul objet, tu ne devrais avoir, pour chaque itération, qu'une seule affectation dans la tableau final $outFull.
Et si tu dois gérer deux valeurs distinctes, $outFree et $outUsed, la structure de données tableau n'est pas adapté ou pas sous cette forme là.
Mais, surtout, sans spécification précise difficile de préconiser une implémentation.
crée ton objet $Out dans la boucle et supprime les variables intermédiaires.
Si ton traitement concerne un seul objet, tu ne devrais avoir, pour chaque itération, qu'une seule affectation dans la tableau final $outFull.
Et si tu dois gérer deux valeurs distinctes, $outFree et $outUsed, la structure de données tableau n'est pas adapté ou pas sous cette forme là.
Mais, surtout, sans spécification précise difficile de préconiser une implémentation.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Benjamin
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 12 ans 11 mois #14555
par Benjamin
Réponse de Benjamin sur le sujet Re:Tableau d'objets
Bonjour,
Merci beaucoup pour l'aide.
J'ai effectué les modifications que tu m'avais donné et cela fonctionne maintenant à merveille.
Je sais maintenant qu'il est plus pratique de créer un nouvelle objet dans la boucle.
Merci beaucoup et j'espère qu'un jour, je pourrais aider d'autre débutant.
Ben
Merci beaucoup pour l'aide.
J'ai effectué les modifications que tu m'avais donné et cela fonctionne maintenant à merveille.
Je sais maintenant qu'il est plus pratique de créer un nouvelle objet dans la boucle.
Merci beaucoup et j'espère qu'un jour, je pourrais aider d'autre débutant.
Ben
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.041 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Tableau d'objets