Question
[Résolu] Attendre l'exécution d'un processus ?
- dimshell
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 86
- Remerciements reçus 0
il y a 7 ans 3 mois #28153
par dimshell
Réponse de dimshell sur le sujet Re:Powershell attendre l'exec
Merci pour ta réponse.
Alors j'avais fais un petit bout de code pareil mais il ne connait pas mon processus windump.
Je vais essayer ta manière.
[code:1]$avant = Get-Process
# Lancement d'une application, par exemple Windump.exe ou calc.exe
Start-Process \"C:\Users\\Desktop\Windump.exe\"
# Récupération des processus à un instant t + 1
$apres = Get-Process
# Comparaison des objets pour trouver l'intrus
Compare-Object -ReferenceObject $avant -DifferenceObject $apres
[/code:1]
[code:1]InputObject SideIndicator
System.Diagnostics.Process (conhost) =>
System.Diagnostics.Process (WinDump) =>
[/code:1]
Donc le ,processus windump est bien après avec le nom de processus (Windump)mais conhost c'est quoi ??
Message édité par: dimshell, à: 12/02/19 15:13
Message édité par: dimshell, à: 12/02/19 15:14<br><br>Message édité par: dimshell, à: 12/02/19 15:42
Alors j'avais fais un petit bout de code pareil mais il ne connait pas mon processus windump.
Je vais essayer ta manière.
[code:1]$avant = Get-Process
# Lancement d'une application, par exemple Windump.exe ou calc.exe
Start-Process \"C:\Users\\Desktop\Windump.exe\"
# Récupération des processus à un instant t + 1
$apres = Get-Process
# Comparaison des objets pour trouver l'intrus
Compare-Object -ReferenceObject $avant -DifferenceObject $apres
[/code:1]
[code:1]InputObject SideIndicator
System.Diagnostics.Process (conhost) =>
System.Diagnostics.Process (WinDump) =>
[/code:1]
Donc le ,processus windump est bien après avec le nom de processus (Windump)mais conhost c'est quoi ??
Message édité par: dimshell, à: 12/02/19 15:13
Message édité par: dimshell, à: 12/02/19 15:14<br><br>Message édité par: dimshell, à: 12/02/19 15:42
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 7 ans 3 mois #28157
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Powershell attendre l'exec
Ne t'en fait pas pour Conhost, c'est un processus système.
Ton process s'appelle bien \"WinDump\".
Ton process s'appelle bien \"WinDump\".
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 7 ans 3 mois #28158
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Powershell attendre l'exec
Pour récupérer une référence vers ton process Windump, tu peux faire ceci :
[code:1]
$process = Start-Process windump.exe -PassThru
[/code:1]
C'est grâce au paramètre -PassThru que l'objet est retourné, sinon PowerShell ne fait qu'exécuter le processus.
On trouve le paramètre -PassThru sur pas mal de commandes PowerShell.
Arnaud
[code:1]
$process = Start-Process windump.exe -PassThru
[/code:1]
C'est grâce au paramètre -PassThru que l'objet est retourné, sinon PowerShell ne fait qu'exécuter le processus.
On trouve le paramètre -PassThru sur pas mal de commandes PowerShell.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- dimshell
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 86
- Remerciements reçus 0
il y a 7 ans 3 mois #28160
par dimshell
Réponse de dimshell sur le sujet Re:Powershell attendre l'exec
Merci pour tes explications.
Donc après tu joue avec ta référence?
[code:1]$avant = Get-Process
# Lancement d'une application, par exemple Windump.exe ou calc.exe
$process =Start-Process C:\Users\\Desktop\Windump.exe -PassThru -ArgumentList \"-i 2 -q -n -t -c 500 tcp\"
# Récupération des processus à un instant t + 1
$apres = Get-Process
# Comparaison des objets pour trouver l'intrus
Compare-Object -ReferenceObject $avant -DifferenceObject $apres[/code:1]<br><br>Message édité par: dimshell, à: 12/02/19 15:47
Donc après tu joue avec ta référence?
[code:1]$avant = Get-Process
# Lancement d'une application, par exemple Windump.exe ou calc.exe
$process =Start-Process C:\Users\\Desktop\Windump.exe -PassThru -ArgumentList \"-i 2 -q -n -t -c 500 tcp\"
# Récupération des processus à un instant t + 1
$apres = Get-Process
# Comparaison des objets pour trouver l'intrus
Compare-Object -ReferenceObject $avant -DifferenceObject $apres[/code:1]<br><br>Message édité par: dimshell, à: 12/02/19 15:47
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 7 ans 3 mois #28165
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Powershell attendre l'exec
Oui tout à fait. Et tu retrouveras ainsi directement la méthode WaitForExit() sur ton objet $process.
Ca devrait simplifier ton code.
Ca devrait simplifier ton code.
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- dimshell
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 86
- Remerciements reçus 0
il y a 7 ans 3 mois #28168
par dimshell
Réponse de dimshell sur le sujet Re:Powershell attendre l'exec
Bonjour Arnaud merci pour ta réponse,
C'est bon j'ai réussi.
Je sais que le $avant et $après sont inutile je vais les supprimer après c’était pour bien voir.
[code:1]# Récupére le chemin utilisateur
$path = Get-Location
# Commande WinDump
$argum=\"-i 2 -q -n -t -c 1500 tcp\"
# Contenant le résultat du WinDump
$fichier = \"$path\Documents\testdump.txt\"
# Contenant le résultat après modifiction de la variable $fichier
$newcontenu = \"$path\Documents\testdump2.txt\"
# Colonne du CSV
$Header = \"c1\",\"ipsrc\", \"portsrc\", \"ipdest\", \"portdest\", \"c6\"
# Lancement d'une application Windump.exe avec l'argument une variable contenant la commande WinDump et écrit dans le fichier fournit
$process=Start-Process $path\Desktop\Windump.exe -PassThru -ArgumentList $argum -RedirectStandardOutput $fichier
# Attends la fin d'execution du processus pour continuer le script
$process.WaitForExit()
# Lecture du fichier comme ci celui-ci été un CSV
$dump = Import-Csv $fichier -Header $Header -Delimiter \" \"
# Remplace après l'ip de destination le : par du vide (parcours l'ensemble des objets)
$dump | foreach {
$_.ipdest = $_.ipdest -replace \":\",\" \"
}
# Remplace via une regex les differentes colonnes (parcours l'ensemble des objets)
$result = $dump | foreach {
$portsrc = $_.ipsrc -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\",\"\"
$ipsrc = ($_.ipsrc -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\")[1]
$portdest = $_.ipdest -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\", \"\"
$ipdest = ($_.ipdest -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\")[1]
$_ | select @{n=\"ipsrc\";e={$ipsrc}},@{n=\"portsrc\";e={$portsrc}},@{n=\"ipdest\";e={$ipdest}},@{n=\"portdest\";e={$portdest}}
}
# écrit dans le résultat dans le fichier $newcontenu et ajoute entre l'ip dest/ source / port un ; (parcours l'ensemble des objets)
$result | foreach {
\"$($_.ipsrc);$($_.portsrc);$($_.ipdest);$($_.portdest)\"
} | Set-Content $newcontenu
# export en CSV sans doublons
$result| select ipsrc, portsrc, ipdest, portdest -Unique | export-csv $path\Documents\windumptest.csv \";\" -NoTypeInformation
[/code:1]
Et pour la tâche planifié c'était bizarre mais ça marche pas avec ce code =(
J'ai ajouté des pause
Read-Host -Prompt \"Press Enter to exit\"
Je suis débile , j'ai changé le nom et je charge dans la tâche planifié le mauvais nom DEBILE !!!!!!!!!!!!!!!!!!!!
Mais peut-on faire comme je veux faire pour éviter de remarquer le chemin à chaque fois?? $path
Message édité par: dimshell, à: 13/02/19 15:00<br><br>Message édité par: dimshell, à: 13/02/19 15:07
C'est bon j'ai réussi.
Je sais que le $avant et $après sont inutile je vais les supprimer après c’était pour bien voir.
[code:1]# Récupére le chemin utilisateur
$path = Get-Location
# Commande WinDump
$argum=\"-i 2 -q -n -t -c 1500 tcp\"
# Contenant le résultat du WinDump
$fichier = \"$path\Documents\testdump.txt\"
# Contenant le résultat après modifiction de la variable $fichier
$newcontenu = \"$path\Documents\testdump2.txt\"
# Colonne du CSV
$Header = \"c1\",\"ipsrc\", \"portsrc\", \"ipdest\", \"portdest\", \"c6\"
# Lancement d'une application Windump.exe avec l'argument une variable contenant la commande WinDump et écrit dans le fichier fournit
$process=Start-Process $path\Desktop\Windump.exe -PassThru -ArgumentList $argum -RedirectStandardOutput $fichier
# Attends la fin d'execution du processus pour continuer le script
$process.WaitForExit()
# Lecture du fichier comme ci celui-ci été un CSV
$dump = Import-Csv $fichier -Header $Header -Delimiter \" \"
# Remplace après l'ip de destination le : par du vide (parcours l'ensemble des objets)
$dump | foreach {
$_.ipdest = $_.ipdest -replace \":\",\" \"
}
# Remplace via une regex les differentes colonnes (parcours l'ensemble des objets)
$result = $dump | foreach {
$portsrc = $_.ipsrc -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\",\"\"
$ipsrc = ($_.ipsrc -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\")[1]
$portdest = $_.ipdest -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\", \"\"
$ipdest = ($_.ipdest -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\")[1]
$_ | select @{n=\"ipsrc\";e={$ipsrc}},@{n=\"portsrc\";e={$portsrc}},@{n=\"ipdest\";e={$ipdest}},@{n=\"portdest\";e={$portdest}}
}
# écrit dans le résultat dans le fichier $newcontenu et ajoute entre l'ip dest/ source / port un ; (parcours l'ensemble des objets)
$result | foreach {
\"$($_.ipsrc);$($_.portsrc);$($_.ipdest);$($_.portdest)\"
} | Set-Content $newcontenu
# export en CSV sans doublons
$result| select ipsrc, portsrc, ipdest, portdest -Unique | export-csv $path\Documents\windumptest.csv \";\" -NoTypeInformation
[/code:1]
Et pour la tâche planifié c'était bizarre mais ça marche pas avec ce code =(
J'ai ajouté des pause
Read-Host -Prompt \"Press Enter to exit\"
Je suis débile , j'ai changé le nom et je charge dans la tâche planifié le mauvais nom DEBILE !!!!!!!!!!!!!!!!!!!!
Mais peut-on faire comme je veux faire pour éviter de remarquer le chemin à chaque fois?? $path
Message édité par: dimshell, à: 13/02/19 15:00<br><br>Message édité par: dimshell, à: 13/02/19 15:07
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.046 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Attendre l'exécution d'un processus ?