【发布时间】:2021-07-14 09:32:48
【问题描述】:
我正在尝试创建一个脚本来检查程序 A、B、C 和 D 是否已安装。如果是这样,则显示消息说它们都已安装,否则说它们未安装。
根据研究,我创建了以下脚本。
$ProgramList = @("A","B","C","D")
ForEach ($Program in $ProgramList){
Function Get-InstalledApps
{
$Regpath = @(
'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
)
Get-ItemProperty $Regpath | .{Process{If($_.DisplayName) { $_ } }}
}
$Result = Get-InstalledApps | Where {$_.DisplayName -like "*$Program*"}
If ($Result) {
[Windows.Forms.Messagebox]::Show("INSTALLED")
} Else {
[Windows.Forms.Messagebox]::Show("NOT INSTALLED")
}
}
我的问题是,当我运行此程序时,我会弹出 4 个消息框,说程序已安装。我正在尝试这样做,所以它只会给出一个消息框。如果全部都安装了,如果一个或多个没有安装,另一个消息框说程序没有安装。
非常感谢任何帮助。
【问题讨论】:
-
需要注意的是,并非所有应用程序都在这些键下注册自己。如果您在环境中使用已知的应用程序,这应该可以正常工作,您可以在其中进行测试,但不要期望它可以与任何随机的应用程序集一起使用。
-
感谢您提供的信息。我只会将它用于在这些键下找到的一组定义的应用程序。我已经测试过了,我需要的所有应用都在这里。
标签: powershell