【发布时间】:2022-11-23 09:32:52
【问题描述】:
我正在尝试创建一个 powershell 脚本以在目录中自动安装所有 .msi 和 .exe 文件。但是,在执行此操作时,我想检查是否已安装任何程序。
我知道我可以像下面这样在系统中获取所有已安装的文件
$32bit_softwares = Get-ItemProperty HKLM:\SOFTWARE\wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName,DisplayVersion,Publisher,InstallDate
$64bit_softwares = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName,DisplayVersion,Publisher,InstallDate
$all_softwares = $32bit_softwares+$64bit_softwares
我可以获得目录中文件的文件名,如下所示:
$directoryRead = Read-Host -Prompt "enter directory"
$fileNames = Get-ChildItem $directory -Recurse -include *.exe,*.msi | ForEach-Object {$_.name}
我如何在循环中比较这两个?喜欢
$all_softwares.DisplayName -like "$softwareName*"
我不确定上面的类似过滤器是否可以完成工作,因为文件名将类似于 examplename.exe
提前致谢。
【问题讨论】:
标签: powershell