Question
split m'énerve
- gwir
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 15 ans 4 mois #8056
par gwir
split m'énerve a été créé par gwir
Bonjour,
Je n'arrive pas à récupérer le premier argument d'un split. Le code :
[code:1]
cls
$verrou = Get-WmiObject win32_process -filter \"name='explorer.exe'\" |
select @{Expression={$started=$_.ConvertToDateTime($_.creationdate);
(get-date).subtract($started).toString()}}
$verrou
$duree = $verrou -split \":\"
$duree[0]
[/code:1]
le résultat :
[code:1]$started=$_.ConvertToDateTime($_.creationdate);
(get-date).subtract($started).toString()
00:15:44.1915580
@{$started=$_.ConvertToDateTime($_.creationdate);
(get-date).subtract($started).toString()=00
[/code:1]
Donc quand j'affiche la variable $verrou j'ai bien le duréee qui m'intéresse, mais quand je split sur le \":\" et que je veux afficher seulement le nombre d'heure ça ne va pas du tout, je récupère [code:1]@{$started=$_.ConvertToDateTime($_.creationdate);
(get-date).subtract($started).toString()=00[/code:1] à la place de \"00\"
Merci pour votre aide
Je n'arrive pas à récupérer le premier argument d'un split. Le code :
[code:1]
cls
$verrou = Get-WmiObject win32_process -filter \"name='explorer.exe'\" |
select @{Expression={$started=$_.ConvertToDateTime($_.creationdate);
(get-date).subtract($started).toString()}}
$verrou
$duree = $verrou -split \":\"
$duree[0]
[/code:1]
le résultat :
[code:1]$started=$_.ConvertToDateTime($_.creationdate);
(get-date).subtract($started).toString()
00:15:44.1915580
@{$started=$_.ConvertToDateTime($_.creationdate);
(get-date).subtract($started).toString()=00
[/code:1]
Donc quand j'affiche la variable $verrou j'ai bien le duréee qui m'intéresse, mais quand je split sur le \":\" et que je veux afficher seulement le nombre d'heure ça ne va pas du tout, je récupère [code:1]@{$started=$_.ConvertToDateTime($_.creationdate);
(get-date).subtract($started).toString()=00[/code:1] à la place de \"00\"
Merci pour votre aide
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 15 ans 4 mois #8058
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:split m'énerve
Salut,
il manque un paramètre à la hashtable que tu passes à Select-Object :
[code:1]
$verrou = Get-WmiObject win32_process -filter \"name='explorer.exe'\" |
select -property @{Name=\"processDate\";
Expression={
$started=$_.ConvertToDateTime($_.creationdate);
(get-date).subtract($started).toString()
}
}
$verrou
[/code:1]
Ensuite $Verrou est un tableau d'objet :
[code:1]$Verrou| Foreach {$_.processDate -split \":\"}
#ou à l'unité
$verrou[0].processDate -split \":\"[/code:1]
Quant au comportement de Split à partir d'un tableau je n'ai pas le temps de te l'expliquer, à priori il transforme les objets en [String], puisqu'une regex attend un chaîne de caractères.
Ne pas oublier Get-Help qui évite Get-Aspirine
il manque un paramètre à la hashtable que tu passes à Select-Object :
[code:1]
$verrou = Get-WmiObject win32_process -filter \"name='explorer.exe'\" |
select -property @{Name=\"processDate\";
Expression={
$started=$_.ConvertToDateTime($_.creationdate);
(get-date).subtract($started).toString()
}
}
$verrou
[/code:1]
Ensuite $Verrou est un tableau d'objet :
[code:1]$Verrou| Foreach {$_.processDate -split \":\"}
#ou à l'unité
$verrou[0].processDate -split \":\"[/code:1]
Quant au comportement de Split à partir d'un tableau je n'ai pas le temps de te l'expliquer, à priori il transforme les objets en [String], puisqu'une regex attend un chaîne de caractères.
Ne pas oublier Get-Help qui évite Get-Aspirine
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- gwir
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 15 ans 4 mois #8061
par gwir
Réponse de gwir sur le sujet Re:split m'énerve
Ok, merci beaucoup, j'y retourne
Connexion ou Créer un compte pour participer à la conversation.
- gwir
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 15 ans 4 mois #8063
par gwir
Réponse de gwir sur le sujet Re:split m'énerve
Donc pour récapituler, la variable contient à la fois la commande et le résultat de la commande, et pour être sûr de récupérer le résultat on lui donne un petit nom.
Ensuite, si on veut travailler uniquement sur le résultat, on appelle la variable en précisant le nom du résultat.
Dans mon exemple on fait $verrou.processDate
Et pour faire mon split, je peux aussi faire :
[code:1]
$duree = $verrou.processDate -split \":\"
[/code:1]
Ça va, j'ai bon?
Ensuite, si on veut travailler uniquement sur le résultat, on appelle la variable en précisant le nom du résultat.
Dans mon exemple on fait $verrou.processDate
Et pour faire mon split, je peux aussi faire :
[code:1]
$duree = $verrou.processDate -split \":\"
[/code:1]
Ça va, j'ai bon?
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 15 ans 4 mois #8066
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:split m'énerve
gwir écrit:
Ensuite on n'utilise peut-être pas les mêmes termes pour désigner les choses.
gwir écrit:
Une fois la variable créé, on ne connait plus le code qui a créé le résultat.
Pour essayer de coller à ta description on pourrait utiliser un ScriptBlock (du code hébergé dans une variable) :
[code:1]
$verrou = {
Get-WmiObject win32_process -filter \"name='explorer.exe'\" |
select -property @{Name=\"processDate\";
Expression={
$started=$_.ConvertToDateTime($_.creationdate);
(get-date).subtract($started).toString()
}
}
}
#On affiche le code
$verrou
$verrou.gettype()
#ScriptBlock
#On exécute le code contenu dans la variable
$resultat=&$verrou
$resultat.gettype()
#PSCustomObject
[/code:1]
Mais il y a tjr avec un producteur, d'un coté des entrées, le code, de l'autre des sorties, le résultat (pour le pipeline pas de résultat=$null).
Je pense que tu as compris le principe.Ça va, j'ai bon?
Ensuite on n'utilise peut-être pas les mêmes termes pour désigner les choses.
gwir écrit:
Pas tout à fait, c'est une suite d'instruction (pipeline) produisant un résultat qui est mémorisé dans une variable.la variable contient à la fois la commande et le résultat de la commande
Une fois la variable créé, on ne connait plus le code qui a créé le résultat.
Pour essayer de coller à ta description on pourrait utiliser un ScriptBlock (du code hébergé dans une variable) :
[code:1]
$verrou = {
Get-WmiObject win32_process -filter \"name='explorer.exe'\" |
select -property @{Name=\"processDate\";
Expression={
$started=$_.ConvertToDateTime($_.creationdate);
(get-date).subtract($started).toString()
}
}
}
#On affiche le code
$verrou
$verrou.gettype()
#ScriptBlock
#On exécute le code contenu dans la variable
$resultat=&$verrou
$resultat.gettype()
#PSCustomObject
[/code:1]
Mais il y a tjr avec un producteur, d'un coté des entrées, le code, de l'autre des sorties, le résultat (pour le pipeline pas de résultat=$null).
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- gwir
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 15 ans 4 mois #8068
par gwir
Réponse de gwir sur le sujet Re:split m'énerve
D'accord, je saisis la différence, effectivement ce sont les instructions qui suivent le pipe que l'on retrouvaient dans la variable.
Merci
Merci
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.042 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- split m'énerve