Question
Récupérer un résultat de WMI pour le reformater
- Cyrille CHAGNON
-
Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 11
- Remerciements reçus 0
J'ai récupéré ce code ci, pour récupérer les noms d'utilisateurs connectés à un programme:
[code:1]$ResultListProcess = Get-WmiObject -Query \"Select * from Win32_Process where name = 'Calc.exe'\" | Select @{Label='Users Details :';Expression={$_.GetOwner().User}} [/code:1]
Ceci fonctionne bien, ça me renvoie un résultat du type:
Users details:
User1
User2
User3
User4
Sauf que je n'ai besoin que de User1 à User4 sans entête, et surtout à la suite (c'est pour afficher dans un log) comme suit:
Timestamp 4 user1, User2, User3, User4
J'ai bricolé des trucs sauvages (que je n'ose vous montrer --- c'est horrible
[code:1]$ResultListProcess = Get-WmiObject -Query \"Select * from Win32_Process where name = 'Calc.exe'\" | Select @{Label='Users Details :';Expression={$_.GetOwner().User}} | out-string[/code:1]
et je fais des trim, des replace, mais ça me donne pas le résultat escompté, car il y a de nombreux retour chariot, des espaces entre userX et ce retour chariot, etc...
J'ai donc plusieurs questions:
a) Est-ce que c'est pertinent de faire un out-string, puis de manipuler ensuite ce gros bloc, qui est plus un texte sur plusieurs lignes ?
b) J'ai pensé utiliser get-content, vous en pensez quoi ?
c) Dans cette ligne Select @{Label='Users Details :';Expression={$_.GetOwner().User}}, je n'ai pas pu me débarrasser du Label, comment puis demander directement un résultat d'une expression ?
Merci de votre aide et éclairages !
Cyrille
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Cyrille999 écrit:
Oui si le résultat est au RDV, ensuite est-ce efficient...a) Est-ce que c'est pertinent de faire un out-string, puis de manipuler ensuite ce gros bloc, qui est plus un texte sur plusieurs lignes ?
Cyrille999 écrit:
Joker.b) J'ai pensé utiliser get-content, vous en pensez quoi ?
Cyrille999 écrit:
Select-Object a besoin d'un nom de propriété.je n'ai pas pu me débarrasser du Label, comment puis demander directement un résultat d'une expression ?
Une autre approche :
[code:1]
$ofs=','
$ResultListProcess = Get-WmiObject -Query \"Select * from Win32_Process where name = 'Calc.exe'\" | % {$_.GetOwner().User}
\"Log : $ResultListProcess\"
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Cyrille CHAGNON
-
Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 11
- Remerciements reçus 0
Merci de tes réponses, même si celle-ci \"joker\" n'est pas digne de toi !!!!
Qu'est-ce que ça fait:
$ofs=','
$ResultListProcess = Get-WmiObject -Query \"Select * from Win32_Process where name = 'Calc.exe'\" | % {$_.GetOwner().User}
\"Log : $ResultListProcess\"
Comment la variable $ofs se lie au résultat et formate la liste des users ?
Merci d'avance de tes explications !
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
C'est l'inverse, c'est le mécanisme de formatage/substitution qui l'utilise :Comment la variable $ofs se lie au résultat et formate la liste des users ?
Output Field Separator. Specifies the character that separates the
elements of an array when the array is converted to a string.
Valid values: Any string.
Default: Space
By default, the $OFS variable does not exist and the output file
separator is a space, but you can add this variable and set it to
any string.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Récupérer un résultat de WMI pour le reformater