Powershell reg查询和表形成

时间:2018-09-17 09:17:00

标签: powershell

Array
(
    [0] => 12v some
    [1] => Item, which contains comma
    [2] => Another item
)

我正在尝试使用计算机及其版本所具有的特定软件创建表。

我想如果软件没有退出,请在标题DisplayName下放置软件名称,在DisplayVersion标题下放置Not Installed。

如果该软件存在,它会很好地工作,但是如果不存在,则不会将名称放在标题下,并且在excel文件上放置空白行。

我现在正在接受的示例是:

$array = @()
$path="C:\Reports\Software.txt"
$programs = Get-Content -Path $Path;
foreach ($program in $programs) 
{
$system64=Get-ItemProperty 
HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | 
Select DisplayName, DisplayVersion | where {$_.DisplayName -like 
"*$program*"};
$system32=Get-ItemProperty 
HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*  | 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:\Reports\Software.csv -NoType 

我想要什么

DisplayVersion DisplayName                                              
Gimp            2.8.22
7-Zip           18.01

Notepad++       7.5.8

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在您的else语句中尝试一下:

$array += @(1 | Select-Object @{Name="DisplayName";Expression={$program}},@{Name="DisplayVersion";Expression={'not installed'}})

由此,您将创建一个自定义对象并将其添加到您的数组中。

希望有帮助。