$array = @()
$path="C:ReportsSoftware.txt"
$programs = Get-Content -Path $Path;
foreach ($program in $programs)
{
$system64=Get-ItemProperty
HKLM:SoftwareWow6432NodeMicrosoftWindowsCurrentVersionUninstall* |
Select DisplayName, DisplayVersion | where {$_.DisplayName -like
"*$program*"};
$system32=Get-ItemProperty
HKLM:SoftwareMicrosoftWindowsCurrentVersionUninstall* | Select
DisplayName, DisplayVersion| where {$_.DisplayName -like "*$program*"};
if ($system64)
{
Write-Host "npp query = "$system64""
Write-Host "npp query = "$system32""
Write-Host -ForegroundColor green "$program already installed!"
$array += $system64
}
elseif ($system32)
{
Write-Host "npp query = "$system64""
Write-Host "npp query = "$system32""
Write-Host -ForegroundColor green "$program already installed!"
$array += $system32
}
else
{
$array += $program
}
}
$array |Export-Csv C:ReportsSoftware.csv -NoType
我正在尝试使用计算机上的特定软件及其版本创建一个表。
我希望如果软件不退出,将软件名称放在标题"显示名称"下,在标题"显示版本"下放置"未安装"。
如果软件存在,它可以正常工作,但如果不存在,它不会将名称放在标题下并在 excel 文件上放置一个空行。
我现在采取的例子是:
DisplayVersion DisplayName
Gimp 2.8.22
7-Zip 18.01
Notepad++ 7.5.8
我想要什么
DisplayVersion DisplayName
Gimp 2.8.22
7-Zip 18.01
Adobe Acrobat Not Installed
Notepad++ 7.5.8
有什么建议吗?
在你的 else 语句中试试这个:
$array += @(1 | Select-Object @{Name="DisplayName";Expression={$program}},@{Name="DisplayVersion";Expression={'not installed'}})
这样,您可以创建一个自定义对象并将其添加到数组中。
希望对您有所帮助。