Powershell 注册查询和表格形成


$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'}})

这样,您可以创建一个自定义对象并将其添加到数组中。

希望对您有所帮助。

最新更新