2017-07-10 3 views
1

Je dois interroger mes compléments Outlook et vérifier si deux modules spécifiques sont installés.Requêtes Outlook Addins avec Powershell

C'est ce que j'ai:

$searchScopes = "HKCU:\SOFTWARE\Microsoft\Office\Outlook\Addins","HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins" 
$searchScopes | % {Get-ChildItem -Path $_ | % {Get-ItemProperty -Path $_.PSPath} | Select-Object @{n="Name";e={Split-Path $_.PSPath -leaf}},FriendlyName,Description} | Sort-Object -Unique -Property name 

Cela me montre tous les compléments installés. Maintenant, je ne sais pas comment filtrer le résultat pour obtenir un vrai ou faux.

Comme les éléments suivants

If List contains 'addin1' then 'addin1' installed = true 

Répondre

1

Avez-vous une liste de addins pour vérifier si elles sont installées? Que voulez-vous faire une fois que vous avez constaté que quelque chose est installé ou non?

Vous pouvez utiliser l'opérateur -in, qui vérifie une valeur par rapport à une liste et est vrai si la valeur est dans la liste. Tout ce code est impression à l'hôte; La logique de la boucle devra être modifiée pour correspondre à vos besoins.

$searchScopes = "HKCU:\SOFTWARE\Microsoft\Office\Outlook\Addins","HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins" 
$names = $searchScopes | % {Get-ChildItem -Path $_ | % {Get-ItemProperty -Path $_.PSPath} | Select-Object @{n="Name";e={Split-Path $_.PSPath -leaf}},FriendlyName,Description} | Sort-Object -Unique -Property name 

if("addin1" -in $names){ 
    Write-Host "addin1 is installed." 
} 
+0

Je dois vérifier quels utilisateurs ont les addins installés. J'écris ensuite les résultats dans un fichier journal. Mais votre solution fonctionne très bien, merci! –

1

En utilisant votre code, ajoutez la deuxième ligne dans une variable

$searchScopes = "HKCU:\SOFTWARE\Microsoft\Office\Outlook\Addins","HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins" 
$Results = $searchScopes | % {Get-ChildItem -Path $_ | % {Get-ItemProperty -Path $_.PSPath} | Select-Object @{n="Name";e={Split-Path $_.PSPath -leaf}},FriendlyName,Description} | Sort-Object -Unique -Property name 

puis interroger les résultats:

$Results.Name -contains 'TeamViewerMeetingAddIn.AddIn' 

ou

$Results.FriendlyName -match 'Google Apps' 

Pour filtrer:

$Results | ? {$_.Name -contains 'TeamViewerMeetingAddIn.AddIn'}