我必须查询我的Outlook外接程序,并检查是否安装了两个特定的外接程序。
这就是我所拥有的:
$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
这将显示所有已安装的外接程序。现在我不知道如何过滤结果以获得真或假。
如下所示
If List contains 'addin1' then 'addin1' installed = true
发布于 2017-07-10 19:43:37
您是否有可检查是否已安装的加载项列表?一旦发现某些东西已安装或未安装,您想要做什么?
您可以使用-in
运算符,它根据列表检查值,如果值在列表中,则为true。这段代码所做的全部工作就是打印到主机;循环中的逻辑需要更改以满足您的需求。
$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."
}
发布于 2017-07-10 19:41:33
使用您的代码将第二行添加到变量中
$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
然后查询结果:
$Results.Name -contains 'TeamViewerMeetingAddIn.AddIn'
或
$Results.FriendlyName -match 'Google Apps'
要过滤:
$Results | ? {$_.Name -contains 'TeamViewerMeetingAddIn.AddIn'}
https://stackoverflow.com/questions/45010987
复制相似问题