2013-05-03 2 views
0

Je veux vérifier si une instance d'Internet Explorer, c'est-à-dire une de ses fenêtres, est déjà ouverte ou non pour que je puisse décider qu'un nouvel objet doit être créé ou je dois attacher au processus existant de cette fenêtre IE. Voici le code ci-dessous:Powershell: comment vérifier si une instance d'Internet Explorer est déjà en cours d'exécution

$ie = (New-Object -COM "Shell.Application").Windows()| ? { $_.Name -eq "Windows Internet Explorer" } 

Je veux joindre aux fenêtres() uniquement lorsqu'une fenêtre de IE est déjà ouvert et si aucune fenêtre IE est ouverte alors la ligne devrait ressembler à ceci:

$ie = (New-Object -COM "Shell.Application") 
+0

'get-process iexplore' ?? –

Répondre

2

essayer:

if (
    Get-Process iexplore -ea silentlycontinue | 
    Where-Object {$_.MainWindowTitle -ne ""} 
) 
+0

** hé merci mon pote, ça a marché :) :) :) :):) ** – Rohit2194017

+0

@ user2194017 Heureux d'aider, n'oubliez pas de l'accepter comme réponse. –

0
if (Get-Process iexplore) { "Yes" } else { "No" } 

Je ne sais pas si cela fonctionne dans un environnement de services terminaux avec de nombreux utilisateurs (ne Get-Process un non-élevé ne regarder dans votre propre session (et la session du système) pour les processus?)

+1

J'ajouterais un paramètre '-erroraction silentlycontinue' pour éviter les exceptions sur les processus manquants. –

+0

J'ai essayé mais ça n'a pas fonctionné, il n'y avait pas de fenêtre IE ouverte et encore get-process montrait 4 instances de iexplore – Rohit2194017

+0

@ user2194017: Si vous avez testé le lancement d'IE via COM depuis une instance PSH vous avez peut-être fui Références COM (celles-ci peuvent prendre beaucoup de temps en GC, PSH n'a pas de pression de mémoire gérée). – Richard

Questions connexes