Question Placer des infos get-wmi dans un tableau

Plus d'informations
il y a 16 ans 8 mois #4891 par Burgun
Bonjour,

Je cherche à placer dans un tableau des élèments retournés par des commandes get-wmi.

Exemple :

Je récupère les processus
$Proc=Get-WmiObject Win32_Process

Je place le nom de ces processus dans un tableau
$Tab1=$Proc | foreach {$_.Name}

je place les ID de ces processus dans un tableau
$Tab2=$Proc | foreach {$_.ProcessId}

L'idée est maintenant de pouvoir créer un tableau à plusieurs dimensions :

[nom] [ID]

Le summum serait de pouvoir en plus nommer les colonnes en fonction de leur contenu.

Mon but étant, par la suite de rajouter de nouvelles colonnes avec d'autres infos.

Je ne maitrise pas du tous les tableaux. J'ai essayé plusieurs combinaisons:

$n = ($Proc | foreach {$_.Name}),($Proc | foreach {$_.ProcessId})

$Tableau = @{$Proc | foreach {$_.Name}= $Proc | foreach {$_.Name}

Mais rien ne marche. Quelqu'un pourrait il m'aider pour la mise en place de tableau

Merci<br><br>Message édité par: bvivi57, à: 30/06/09 14:20

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

Plus d'informations
il y a 16 ans 8 mois #4894 par clem
Salut,

J'ai appris sur ce même forum à utiliser les HashTables, dans ton cas ( si je dis pas de bêtises) ce sera une collection (tableau) de Hashtables.

Par contre je n'ai pas de console powershell sous la main pour tester mais la commande suivant devrait te convenir :

[code:1]$tab = Get-WmiObject Win32_Process | foreach { return @{Name=$_.Name;Process=$.ProcessID }[/code:1]

ca marche aussi sans le return explicitement écrit :

[code:1]$tab = Get-WmiObject Win32_Process | foreach { @{Name=$_.Name;Process=$.ProcessID }[/code:1]

Exemples d'accès aux données :

[code:1]$tab[/code:1]

[code:1]$tab | foreach { $_.Name }[/code:1]

[code:1]Write-Host \&quot;Process :\&quot; $tab[0].Name
Write-Host \&quot;Id du process :\&quot; $tab[0].Process[/code:1]

Je laisse le soin à laurent ou arnaud de te guider plus précisément sur le sujet et de me corriger si nécessaire<br><br>Message édité par: clem, à: 30/06/09 15:44

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

Plus d'informations
il y a 16 ans 8 mois #4895 par Laurent Dardenne
bvivi57 écrit:

L'idée est maintenant de pouvoir créer un tableau à plusieurs dimensions :
[nom] [ID]

Sauf qu'ici nom et id sont des propriétés d'un objet et pas une dimension de tableau, mais peuvent l'être si tu as besoin d'un telle structure.
La solution de clem fonctionne, mais on a dans ce cas une collection de collection, 1 tableau n hashtables.
On peut aborder différement le problème avec Select-Object, on garde ainsi un tableau d'objets personnalisés :
[code:1]
$Tab=Get-WmiObject Win32_Process |Select nom,ProcessID
[/code:1]
bvivi57 écrit:

Le summum serait de pouvoir en plus nommer les colonnes en fonction de leur contenu.

[code:1]
$Tab=Get-WmiObject Win32_Process |
Select @{Name=\&quot;Nom\&quot;;Expression={$_.Name}},
@{Name=\&quot;ID\&quot;;Expression={$_.ProcessID}} # champ calculé
[/code:1]
L'accés aux éléments du tableau est identique.

Si tu n'as pas besoin du tableau émis par le cmdlet Get-WmiObject, tu peux améliorer un peu les performances WMI en ne récupérant que ce qui t'intéresse :
[code:1]
$Tab=Get-WmiObject -query \&quot;SELECT Name,ProcessID FROM Win32_Process\&quot;|
Select @{Name=\&quot;Nom\&quot;;Expression={$_.Name}},
@{Name=\&quot;ID\&quot;;Expression={$_.ProcessID}}
[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 8 mois #4898 par Burgun
merci beaucoup pour votre aide.

C'est tout a fait ce que je voulais.

J'ai choisis la derniere solution. D'après ce que j'ai lu en parcourant ce magnifique guide \&quot;Windows PowerShell Guide de référence\&quot; !) il s'agit du WQL.

Je ne suis juste pas très au clair avec cette notation:

@{....

J'ignore la signification du @

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

Plus d'informations
il y a 16 ans 8 mois #4902 par Laurent Dardenne
bvivi57 écrit:

J'ignore la signification du @

Cela indique une construction de hashtable.
Plus d'infos .

A propos de WQL :
WQL (SQL for WMI)
Grammaire de WQL <br><br>Message édité par: Laurent Dardenne, à: 30/06/09 18:49

Tutoriels PowerShell

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

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