Question
Fonction audit et conversion HTML
- bordin
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 88
- Remerciements reçus 0
il y a 16 ans 4 mois #1319
par bordin
Fonction audit et conversion HTML a été créé par bordin
Bonjour,
j'ai tourné le bug dans tous les sens (pour moi!), mais je n'arrive pas à comprendre pour quoi dans cette fonction la valeur ram n'est pas remontée!
[code:1]function ScanToHTML {
$listePC | foreach {
if(alive ($_)) {
$Qtram = (gwmi Win32_OperatingSystem -computername $_).TotalVisibleMemorySize
$disk=gwmi win32_logicaldisk -filter \"DriveType=3\" -computer $_
$disk | add-member NoteProperty RAM $Qtram}
$TabDisk_Qtram+=$disk}
$TabDisk_Qtram| select @{n=\"Nom\";e={$_.__Server}},
@{n=\"Volume\";e={$_.DeviceId}},
@{n=\"Total (Mo)\";e={[math]::round($_.Size/1MB«»)}},
@{n=\"Libre (Mo)\";e={[math]::round($_.FreeSpace/1MB«»)}},
@{n=\"RAM (Go)\";e={[math]::round($TabDisk_Qtram.ram)}} | convertto-html | out-file .\auditRessource.html }[/code:1]
Quand j'affiche le contenu de la variable $disk après le $disk | add-member NoteProperty RAM $Qtram, la propriété RAM n'apparait pas!
Merci pour vos lumières!
cdt
camilleB
j'ai tourné le bug dans tous les sens (pour moi!), mais je n'arrive pas à comprendre pour quoi dans cette fonction la valeur ram n'est pas remontée!
[code:1]function ScanToHTML {
$listePC | foreach {
if(alive ($_)) {
$Qtram = (gwmi Win32_OperatingSystem -computername $_).TotalVisibleMemorySize
$disk=gwmi win32_logicaldisk -filter \"DriveType=3\" -computer $_
$disk | add-member NoteProperty RAM $Qtram}
$TabDisk_Qtram+=$disk}
$TabDisk_Qtram| select @{n=\"Nom\";e={$_.__Server}},
@{n=\"Volume\";e={$_.DeviceId}},
@{n=\"Total (Mo)\";e={[math]::round($_.Size/1MB«»)}},
@{n=\"Libre (Mo)\";e={[math]::round($_.FreeSpace/1MB«»)}},
@{n=\"RAM (Go)\";e={[math]::round($TabDisk_Qtram.ram)}} | convertto-html | out-file .\auditRessource.html }[/code:1]
Quand j'affiche le contenu de la variable $disk après le $disk | add-member NoteProperty RAM $Qtram, la propriété RAM n'apparait pas!
Merci pour vos lumières!
cdt
camilleB
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 16 ans 4 mois #1320
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Fonction audit et conversion HTML
Hi! Hi! PowerShell est un petit coquin!
A priori, les PC que tu interroges avec WMI ont plusieurs disques logiques. En conséquence, ta variable $disk est un tableau avec autant d'éléments que de disques récupérés.
Ensuite, lorsque tu fais \"$disk | blablabla\", tu passes à \"blablabla\" chaque élément de $disk et non pas la variable $disk en tant que telle.
Donc, la propriété RAM est en fait ajoutée à chaque élément de $disk. Tu devrais pouvoir la retrouver en faisant $disk[0].ram, mais également $disk[1].ram et ainsi de suite selon le nombre de disques.
Pour ajouter la propriété RAM au tableau $disk lui-même et non pas aux objets qu'il contient, tu aurais dû écrire:
[code:1]
add-member -in $disk NoteProperty RAM $qtRam
[/code:1]
On retrouve ce même comportement quand on fait un get-member sur un objet qui est en fait un tableau d'objets:
[code:1]
PS> $doigts = 1..5
PS> $doigts | get-member
TypeName: System.Int32
Name MemberType Definition
----
...
PS> get-member -in $doigts
TypeName: System.Object[]
Name MemberType Definition
----
...
[/code:1]CQFD
Janel
A priori, les PC que tu interroges avec WMI ont plusieurs disques logiques. En conséquence, ta variable $disk est un tableau avec autant d'éléments que de disques récupérés.
Ensuite, lorsque tu fais \"$disk | blablabla\", tu passes à \"blablabla\" chaque élément de $disk et non pas la variable $disk en tant que telle.
Donc, la propriété RAM est en fait ajoutée à chaque élément de $disk. Tu devrais pouvoir la retrouver en faisant $disk[0].ram, mais également $disk[1].ram et ainsi de suite selon le nombre de disques.
Pour ajouter la propriété RAM au tableau $disk lui-même et non pas aux objets qu'il contient, tu aurais dû écrire:
[code:1]
add-member -in $disk NoteProperty RAM $qtRam
[/code:1]
On retrouve ce même comportement quand on fait un get-member sur un objet qui est en fait un tableau d'objets:
[code:1]
PS> $doigts = 1..5
PS> $doigts | get-member
TypeName: System.Int32
Name MemberType Definition
----
...
PS> get-member -in $doigts
TypeName: System.Object[]
Name MemberType Definition
----
...
[/code:1]CQFD
Janel
Connexion ou Créer un compte pour participer à la conversation.
- bordin
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 88
- Remerciements reçus 0
il y a 16 ans 4 mois #1321
par bordin
Réponse de bordin sur le sujet Re:Fonction audit et conversion HTML
Salut,
Merci pour la réponse Janel. J'ai testé, mais c'est pareil!!
Que faire?
Merci
Merci pour la réponse Janel. J'ai testé, mais c'est pareil!!
Que faire?
Merci
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 16 ans 4 mois #1323
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Fonction audit et conversion HTML
Tiens, c'est curieux ça marche en ligne de commande mais pas dans le script. Je regarderai ça dans la journée.
En attendant, avec ta syntaxe initiale ($disk | add-member ...) tu devrais pouvoir utiliser $disk[0].ram, non? Ca donne quoi?
Janel
En attendant, avec ta syntaxe initiale ($disk | add-member ...) tu devrais pouvoir utiliser $disk[0].ram, non? Ca donne quoi?
Janel
Connexion ou Créer un compte pour participer à la conversation.
- bordin
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 88
- Remerciements reçus 0
il y a 16 ans 4 mois #1327
par bordin
Réponse de bordin sur le sujet Re:Fonction audit et conversion HTML
Bonjour,
Effectivement en faisant avec çà, il y a du nouveau:
[code:1]function ScanToHTML {
$listePC | foreach {
if(alive ($_)) {
$Qtram = (gwmi Win32_OperatingSystem -computername $_).TotalVisibleMemorySize
$disk=gwmi win32_logicaldisk -filter \"DriveType=3\" -computer $_
#add-member -inputObject $disk NoteProperty RAM -value $Qtram}
$disk | add-member NoteProperty RAM -value $Qtram}
$TabDisk_Qtram+=$disk}
$TabDisk_Qtram | select @{n=\"Nom\";e={$_.__Server}},
@{n=\"Volume\";e={$_.DeviceId}},
@{n=\"Total (Mo)\";e={[math]::round($_.Size/1MB«»)}},
@{n=\"Libre (Mo)\";e={[math]::round($_.FreeSpace/1MB«»)}},
@{n=\"RAM (Go)\";e={[math]::round($TabDisk_Qtram[0].ram/1MB«»)}} | convertto-html | out-file .\auditRessource.html }[/code:1]
$TabDisk_Qtram[0].ram renvoi la ram pour le 1er pc scanné!
Autrement, j'ai voulu créer mon propre objet en faisant:
[code:1]function ScanToPS2 {
$Qtram = (gwmi Win32_OperatingSystem -computername .).TotalVisibleMemorySize
$objdisk=gwmi win32_logicaldisk -filter \"DriveType=3\" -computer .
$monobj=New-Object object
$monobj | add-member NoteProperty RAM -value $Qtram
$monobj | add-member NoteProperty Partitions -value $objdisk.DEviceID
$monobj | add-member NoteProperty Taille -value $objdisk.Size
$monobj | add-member NoteProperty EspaceLibre -value $objdisk.FreeSpace
$monobj | add-member NoteProperty NomServeur -value $objdisk.__Server
$monobj | Format-Table @{l=\"Nom\";e={$_.NomServeur}},
@{l=\"Volume\";e={$_.Partitions}},
@{l=\"Total (Mo)\";e={[math]::round($_.Taille/1MB«»)}},
@{l=\"Libre (Mo)\";e={[math]::round($_.EspaceLibre/1MB«»)}},
@{l=\"RAM (Go)\";e={[math]::round($Monobj.ram/1MB«»)}}
}[/code:1]
C'est possible non? J'ai pas de valeurs en sortie!
Merci beaucoup pour votre aide!
Effectivement en faisant avec çà, il y a du nouveau:
[code:1]function ScanToHTML {
$listePC | foreach {
if(alive ($_)) {
$Qtram = (gwmi Win32_OperatingSystem -computername $_).TotalVisibleMemorySize
$disk=gwmi win32_logicaldisk -filter \"DriveType=3\" -computer $_
#add-member -inputObject $disk NoteProperty RAM -value $Qtram}
$disk | add-member NoteProperty RAM -value $Qtram}
$TabDisk_Qtram+=$disk}
$TabDisk_Qtram | select @{n=\"Nom\";e={$_.__Server}},
@{n=\"Volume\";e={$_.DeviceId}},
@{n=\"Total (Mo)\";e={[math]::round($_.Size/1MB«»)}},
@{n=\"Libre (Mo)\";e={[math]::round($_.FreeSpace/1MB«»)}},
@{n=\"RAM (Go)\";e={[math]::round($TabDisk_Qtram[0].ram/1MB«»)}} | convertto-html | out-file .\auditRessource.html }[/code:1]
$TabDisk_Qtram[0].ram renvoi la ram pour le 1er pc scanné!
Autrement, j'ai voulu créer mon propre objet en faisant:
[code:1]function ScanToPS2 {
$Qtram = (gwmi Win32_OperatingSystem -computername .).TotalVisibleMemorySize
$objdisk=gwmi win32_logicaldisk -filter \"DriveType=3\" -computer .
$monobj=New-Object object
$monobj | add-member NoteProperty RAM -value $Qtram
$monobj | add-member NoteProperty Partitions -value $objdisk.DEviceID
$monobj | add-member NoteProperty Taille -value $objdisk.Size
$monobj | add-member NoteProperty EspaceLibre -value $objdisk.FreeSpace
$monobj | add-member NoteProperty NomServeur -value $objdisk.__Server
$monobj | Format-Table @{l=\"Nom\";e={$_.NomServeur}},
@{l=\"Volume\";e={$_.Partitions}},
@{l=\"Total (Mo)\";e={[math]::round($_.Taille/1MB«»)}},
@{l=\"Libre (Mo)\";e={[math]::round($_.EspaceLibre/1MB«»)}},
@{l=\"RAM (Go)\";e={[math]::round($Monobj.ram/1MB«»)}}
}[/code:1]
C'est possible non? J'ai pas de valeurs en sortie!
Merci beaucoup pour votre aide!
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 16 ans 4 mois #1329
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Fonction audit et conversion HTML
Perso quand je teste ta fonction j'ai bien un affichage:
[code:1]
Nom Volume Total (Mo) Libre (Mo) RAM (Go)
---
0 0 2[/code:1]
Comme tu le vois, certains champs sont vides. La raison en est que j'ai plusieurs disques, donc $objdisk.__Server et $objdisk.partitions n'existent pas en tant que propriétés de $objdisk mais en tant que propriétés de chacun des éléments de $objdisk. Les autres propriétés Size et Freespace ont le même problème, mais comme ta fonction fait une opération mathématique avec ces propriétés quand elle les affecte au nouvel objet, j'hérite de la valeur 0 qui en résulte.
La façon de faire va dépendre de ce que tu veux faire du résultat. Quel type d'affichage veux-tu?
Janel
[code:1]
Nom Volume Total (Mo) Libre (Mo) RAM (Go)
---
0 0 2[/code:1]
Comme tu le vois, certains champs sont vides. La raison en est que j'ai plusieurs disques, donc $objdisk.__Server et $objdisk.partitions n'existent pas en tant que propriétés de $objdisk mais en tant que propriétés de chacun des éléments de $objdisk. Les autres propriétés Size et Freespace ont le même problème, mais comme ta fonction fait une opération mathématique avec ces propriétés quand elle les affecte au nouvel objet, j'hérite de la valeur 0 qui en résulte.
La façon de faire va dépendre de ce que tu veux faire du résultat. Quel type d'affichage veux-tu?
Janel
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.073 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Fonction audit et conversion HTML