Powershell使用已安装程序的列表来获取有关特定程序的信息

时间:2015-04-18 00:53:47

标签: powershell

所以我已成功检索到计算机上所有已安装程序的列表,并且能够使用以下代码将它们存储到数组中:

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | 
Format-Table –AutoSize

现在我要做的是输出我已经完成的程序名称列表,但是允许用户输入他们想要查看的程序名称的更多信息。并有一些命令通过,找到程序,并输出只有该程序的属性。有什么提示吗?

2 个答案:

答案 0 :(得分:1)

你并不是特别想要的东西,但这会满足你所提供的一点点。向用户显示名称。继续提示,直到他们没有输入任何内容。对于每个匹配,我们向用户显示相关结果并继续提示。

# Gather information
$productDetails =  Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate
# Display teaser information to the user
$productDetails | Select-Object DisplayName


do {
    Write-Host "--McPrompter 5000--" -ForegroundColor Green
    $response = Read-Host "Type a partial software title or <Enter> to quit"

    # If there is text lets see if there is a match
    If($response){
        $results = $productDetails | Where-Object{$_.DisplayName -like "*$response*"}
        If($results){ 
            $results | Format-Table -AutoSize
        } Else {
            Write-Host "No match for $response. Please try again." -ForegroundColor Red
        }
    }
} until (!$response)

关于该密钥的说明

了解如果系统是x64,则需要检查syswow64密钥以获取完整列表。您应该可以在此处或在Google上找到有关该信息的更多信息。

答案 1 :(得分:0)

您基本上可以通过显示软件列表来尝试简单的事情,并在选择后使用您的逻辑。

$Softwares = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  Select-Object DisplayName, DisplayVersion, Publisher, InstallDate

$Choice = @{}
$Number = 1
foreach ($Software in $Softwares.DisplayName)
{
    $Choice.add($Number,$Software)
    $Number = $Number + 1 
}

$Choice | Format-Table
[Int]$MenuChoice = read-host "Please enter your choice"
Switch($MenuChoice)
{
        1{
            Write-Host "Selected Software is" $Choice.get_item($MenuChoice);
            #Your Logic here
         }
        2{
            #Your Logic here
         }
        default{"please select a valid Software"}
}

希望这会有所帮助!!