How do I retrieve the installed software names and their version with the registry key in a remote machine. If some one can help or direct me to finding out how
kevinsmickle,
Welcome to the forum.
Your question is quite vague. What exactly is it what you have issues with?
In general … this forum is for scripting questions rather than script requests. We do not write customized and ready to use scripts or solutions on request.
We actually expect you to make an own attempt at the first place to get your task done or to solve your problem. If you have done so already please document here what exactly you have done and show your code. Then we probably might be able to help you step further.
Regardless of that … what you asked for is a very common task and has been asked a lot of times already and has been answered a lot of time already. Please use your prefered internet search engine to look for examples you can use right away or at least can adapt to your particular needs.
param (
[string]$RemoteHost,
[string]$SoftwareName = “*”
)
$app = Get-WmiObject -Class Win32_Product -ComputerName $RemoteHost | Where-Object { $_.Name -like $SoftwareName }
if ($app) {
if ($SoftwareName -eq “*”) {
$app | Select-Object Name, Version | Export-Csv -Path “DD_installed_software.csv”
Write-Output “Installed software information exported to DD_installed_software.csv”
} else {
Write-Output “$SoftwareName is installed with version $($app.Version) on $RemoteHost”
}
} else {
Write-Output “$SoftwareName is not installed on $RemoteHost”
OK …
First of all …
When you post code, sample data, console output or error messages please format it as code using the preformatted text button ( </> ). Simply place your cursor on an empty line, click the button and paste your code.
Thanks in advance
How to format code in PowerShell.org <---- Click
Next …
And last but not least …
what’s your issue with the code?
Please keep in mind … we cannot see your screen and we cannot read your mind.
Ah ok thanks, so I just want to find the reg for the software as well
Start with searching for the proper key words:
https://www.google.com/search?q=powershell+registry+installed+software+remote+computer
$list=@()
$InstalledSoftwareKey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
$InstalledSoftware=[microsoft.win32.registrykey]::OpenRemoteBaseKey('LocalMachine',$pcname)
$RegistryKey=$InstalledSoftware.OpenSubKey($InstalledSoftwareKey)
$SubKeys=$RegistryKey.GetSubKeyNames()
Foreach ($key in $SubKeys){
$thisKey=$InstalledSoftwareKey+"\\"+$key
$thisSubKey=$InstalledSoftware.OpenSubKey($thisKey)
$obj = New-Object PSObject
$obj | Add-Member -MemberType NoteProperty -Name "ComputerName" -Value $pcname
$obj | Add-Member -MemberType NoteProperty -Name "DisplayName" -Value $($thisSubKey.GetValue("DisplayName"))
$obj | Add-Member -MemberType NoteProperty -Name "DisplayVersion" -Value $($thisSubKey.GetValue("DisplayVersion"))
$list += $obj
}
$list | where { $_.DisplayName } | select ComputerName, DisplayName, DisplayVersion | FT
How would the registry key be listed ? Hmmm
You picked the wrong example … try this:
I don’t know what you mean with this. On a 64 bit system are two uninstall keys for installed software. With the function I linked the registry key is in the property Path
.