2010-09-09 8 views
2

Ma mission est de passer de l'utilisation de PowerShell pour créer une instance d'Outlook simplement en affichant, ou rendre visible le processus que je peux voir dans le TaskManager.PowerShell pour ouvrir Outlook, rendre visible

Pour Digress, cela fonctionne pour Word, mais pas si je remplace Outlook. pour Word.

$ MsApp = New-Object -comObject Word.Application

$ MsApp.Visible = $ true

J'ai vérifié les méthodes, mais ne peut pas trouver un verbe approprié pour ouvrir, courir ou rendre visible. Je serais tellement reconnaissant pour une solution.

Répondre

6

Pour activer un exécutant Outlook qui vient de réduire au minimum:

[Runtime.InteropServices.Marshal]::GetActiveObject("Outlook.Application").ActiveWindow().Activate() 

Pour créer une instance Outlook qui est visible (il est plus simple juste start outlook.exe):

(new-object -com Outlook.Application).GetNamespace("MAPI").GetDefaultFolder("olFolderInbox").GetExplorer().Display() 

Pour rendre le code plus clair:

$outlook = new-object -com Outlook.Application 
$namespace = $outlook.GetNamespace("MAPI") 
$folder = $namespace.GetDefaultFolder("olFolderInbox") 
$explorer = $folder.GetExplorer() 
$explorer.Display() 
+0

Brilliant - Juste ce que je voulais, merci. –

0

Si vous souhaitez rendre visible une instance de Word ou Outlook en cours d'exécution, vous ne souhaitez pas utiliser New-Object. Vous voulez obtenir l'objet en cours d'exécution. Vous pouvez le faire avec un appel .NET:

$word = [Runtime.InteropServices.Marshal]::GetActiveObject("Word.Application") 
$word.Visible = $true 
+0

Merci Keith, je vais essayer demain. –

+0

Cela fonctionne pour WORD, mais pas pour Outlook. –

+0

@GuyThomas: Essayez '$ outlook = [Runtime.InteropServices.Marshal] :: GetActiveObject (" Outlook.Application ") $ outlook.ActiveWindow(). Activate()' – craig

Questions connexes