Question
Connaitre process fenêtre powershell
- brutosaure
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 59
- Remerciements reçus 0
il y a 14 ans 11 mois #9765
par brutosaure
Connaitre process fenêtre powershell a été créé par brutosaure
Bonjour,
j'aimerais savoir si il est possible dans le cas ou j'ai plusieurs fenêtre PowerShell, de connaitre le processus qui est lié à chaque fenêtre.
Afin par exemple de pouvoir stopper le processus de celle que je veux.
Car si je fais un get-process -Name powershell, j'ai tout mes processus powershell, mais je ne sais pas dire que tel processus serait lié à tel fenêtre.
En fait j'aimerais créer un script qui sauvegarde mon historique avec cette commande
[code:1]Register-EngineEvent PowerShell.Exiting -Action {Save-History} –Supportevent[/code:1]
Le seul prob avec ca, c'est que je dois fermer ma fenêtre avec la commande exit et non avec la croix de la fenêtre, car dans ce cas, ce n'est pas powershell qui recoit l'event.
J'ai testé dans script \"closeWithHistory.ps1\" avec le code suivant
[code:1]Register-EngineEvent PowerShell.Exiting -Action {Save-History} –Supportevent[/code:1]
suivit de
[code:1]exit[/code:1]
Mais ma fenêtre reste ouverte.
Je me disais donc, que si j'arrive à savoir quel processus id est lié à ma ou mes fenêtres powershell, je pourrais utiliser, la commande stop-process -id xxxx
En espérant que celle-ci soit l'équivalent d'un exit et non d'un close avec la croix.
D'avance merci
Message édité par: brutosaure, à: 9/06/11 10:42
Message édité par: brutosaure, à: 9/06/11 10:46<br><br>Message édité par: brutosaure, à: 9/06/11 14:30
j'aimerais savoir si il est possible dans le cas ou j'ai plusieurs fenêtre PowerShell, de connaitre le processus qui est lié à chaque fenêtre.
Afin par exemple de pouvoir stopper le processus de celle que je veux.
Car si je fais un get-process -Name powershell, j'ai tout mes processus powershell, mais je ne sais pas dire que tel processus serait lié à tel fenêtre.
En fait j'aimerais créer un script qui sauvegarde mon historique avec cette commande
[code:1]Register-EngineEvent PowerShell.Exiting -Action {Save-History} –Supportevent[/code:1]
Le seul prob avec ca, c'est que je dois fermer ma fenêtre avec la commande exit et non avec la croix de la fenêtre, car dans ce cas, ce n'est pas powershell qui recoit l'event.
J'ai testé dans script \"closeWithHistory.ps1\" avec le code suivant
[code:1]Register-EngineEvent PowerShell.Exiting -Action {Save-History} –Supportevent[/code:1]
suivit de
[code:1]exit[/code:1]
Mais ma fenêtre reste ouverte.
Je me disais donc, que si j'arrive à savoir quel processus id est lié à ma ou mes fenêtres powershell, je pourrais utiliser, la commande stop-process -id xxxx
En espérant que celle-ci soit l'équivalent d'un exit et non d'un close avec la croix.
D'avance merci
Message édité par: brutosaure, à: 9/06/11 10:42
Message édité par: brutosaure, à: 9/06/11 10:46<br><br>Message édité par: brutosaure, à: 9/06/11 14:30
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 14 ans 11 mois #9772
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Connaitre process fenêtre powershell
brutosaure écrit:
[code:1]
$signature = @\"
using System;
using System.Text;
using System.Runtime.InteropServices;
namespace Win32Functions {
public static class Win32GetWindowText{
[DllImport(\"user32.dll\", SetLastError = true, CharSet = CharSet.Auto)]
public static extern int GetWindowText ( IntPtr hWnd, [Out] StringBuilder lpString, int nMaxCount );
}
}
\"@
$GetWindowText = Add-Type $signature -passThru
$stringBuilder = new-object System.Text.StringBuilder(256)
Get-Process -name Powershell|Foreach {
[void]$GetWindowText::GetWindowText($_.MainWindowHandle,$stringBuilder, $stringBuilder.Capacity)
$stringBuilder.ToString()
}
#from social.msdn.microsoft.com/forums/en-US/w...8-b70a-468cfd195ced/
[/code:1]
On peut changer le nom avec :
[code:1]
function HostTitre {Param ([string]$Titre=\"PowerShell\"«»); $host.UI.RawUI.WindowTitle=$Titre }
[/code:1]
Par manque de temps je ne suis allé plus loin dans les tests, ceci peut donc ne pas être une solution.
brutosaure écrit:
As-tu essayé avec un autre event, celui du process par exemple ?
[code:1]
$p= get-process -Name powershell
$p[0]|gm -membertype event
#Exited
[/code:1]
Si la console à un nom unique peut être avec ceci :j'aimerais savoir si il est possible dans le cas ou j'ai plusieurs fenêtre PowerShell, de connaitre le processus qui est lié à chaque fenêtre.
[code:1]
$signature = @\"
using System;
using System.Text;
using System.Runtime.InteropServices;
namespace Win32Functions {
public static class Win32GetWindowText{
[DllImport(\"user32.dll\", SetLastError = true, CharSet = CharSet.Auto)]
public static extern int GetWindowText ( IntPtr hWnd, [Out] StringBuilder lpString, int nMaxCount );
}
}
\"@
$GetWindowText = Add-Type $signature -passThru
$stringBuilder = new-object System.Text.StringBuilder(256)
Get-Process -name Powershell|Foreach {
[void]$GetWindowText::GetWindowText($_.MainWindowHandle,$stringBuilder, $stringBuilder.Capacity)
$stringBuilder.ToString()
}
#from social.msdn.microsoft.com/forums/en-US/w...8-b70a-468cfd195ced/
[/code:1]
On peut changer le nom avec :
[code:1]
function HostTitre {Param ([string]$Titre=\"PowerShell\"«»); $host.UI.RawUI.WindowTitle=$Titre }
[/code:1]
Par manque de temps je ne suis allé plus loin dans les tests, ceci peut donc ne pas être une solution.
brutosaure écrit:
J'ai déjà lu un blog qui proposait une solution sur ce sujet, peut être sur ceux des MVP Joel Bennett(huddledmasses) ou Oisin Grehan ( nivot ink).En fait j'aimerais créer un script qui sauvegarde mon historique avec cette commande
As-tu essayé avec un autre event, celui du process par exemple ?
[code:1]
$p= get-process -Name powershell
$p[0]|gm -membertype event
#Exited
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- brutosaure
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 59
- Remerciements reçus 0
il y a 14 ans 11 mois #9794
par brutosaure
Réponse de brutosaure sur le sujet Re:Connaitre process fenêtre powershell
Merci Laurent pour ta réponse, je suis occupé à creuser du côté de la gestion des Event et pour ce faire, je lis ton tuto 
laurent-dardenne.developpez.com/articles...rShell-version-2.pdf <br><br>Message édité par: brutosaure, à: 15/06/11 13:03
laurent-dardenne.developpez.com/articles...rShell-version-2.pdf <br><br>Message édité par: brutosaure, à: 15/06/11 13:03
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 14 ans 11 mois #9803
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Connaitre process fenêtre powershell
brutosaure écrit:
Sinon sur ce :
Laurent Dardenne écrit:
Pas sûr que ce soit possible dans un prg console, car il n'y a pas de file de messages permettant de trapper les messages Windows (WM_Close/WM_Quit).
Autre approche, utiliser un timer pour une sauvegarde périodique de l'historique, bon ça a un petit côtè bricole...
Bonne lecture.je lis ton tuto
Sinon sur ce :
Laurent Dardenne écrit:
Je t'ai dit une ânnerieAs-tu essayé avec un autre event, celui du process par exemple ?
Pas sûr que ce soit possible dans un prg console, car il n'y a pas de file de messages permettant de trapper les messages Windows (WM_Close/WM_Quit).
Autre approche, utiliser un timer pour une sauvegarde périodique de l'historique, bon ça a un petit côtè bricole...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.040 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Connaitre process fenêtre powershell