Get-ItemProperty:无法将参数绑定到参数 'Path',因为它为空

Get-ItemProperty : Cannot bind argument to parameter 'Path' because it is null

我阅读了很多帖子并提取了很多重要信息。但我仍然无法从注册表中获取版本号。我找到了这个代码来获得一个 IE 版本,而且似乎工作得很好。

$array =@() 
$keyname = 'SOFTWARE\Microsoft\Internet Explorer' 
$computernames = Get-Content C:\scripts\test_names1.csv 
foreach ($server in $computernames) 
{ 
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $server) 
$key = $reg.OpenSubkey($keyname) 
$value = $key.GetValue('svcVersion') 
 $obj = New-Object PSObject 

    $obj | Add-Member -MemberType NoteProperty -Name "ComputerName" -Value $server 

    $obj | Add-Member -MemberType NoteProperty -Name "IEVersion" -Value $value 

    $array += $obj  


} 

$array | select ComputerName,IEVersion | export-csv C:\scripts\test1-IE_Version.csv

但是当我修改它以尝试获得 Google Chrome 版本时它失败了

**Get-ItemProperty : Cannot bind argument to parameter 'Path' because it is null.**

这是我为尝试获得 Chrome 版本所做的修改。

$array =@()
$keyname = '\SOFTWARE\Wow6432Node\Google\Update\clients\{8A69D345-D564-463c-AFF1-A69D9E530F96}'
$computernames = Get-Content C:\scripts\test_names.csv
foreach ($server in $computernames)
{
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $server)
$regkey = $reg.OpenSubKey('SOFTWARE\Wow6432Node\Google\Update\clients\{8A69D345-D564-463c-AFF1-A69D9E530F96}')
$value = (Get-ItemProperty -Path $regkey -Name pv).pv
$obj = New-Object PSObject 

    $obj | Add-Member -MemberType NoteProperty -Name "ComputerName" -Value $server 
    $obj | Add-Member -MemberType NoteProperty -Name "Installed" -Value $installed 
    $obj | Add-Member -MemberType NoteProperty -Name "ChromeVersion" -Value $value
    $array += $obj  
}

$array | select ComputerName,Installed,ChromeVersion | export-csv C:\scripts22016_Chrome_Version.csv

由于原始编辑抛出更多错误,我不得不更改 $keyname 和 $value 变量。我是 powershell 的新手,所以请放轻松。

提前致谢。

-S

以下对我有效,与你的IE代码基本相同:

$keyname = 'SOFTWARE\Wow6432Node\Google\Update\clients\{8A69D345-D564-463c-AFF1-A69D9E530F96}'
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $server)
$regkey = $reg.OpenSubKey($keyname)
$value = $regkey.GetValue('pv')

如果我理解你的问题,你问的是如何判断计算机上安装了哪些程序,以及计算机上的IE版本是什么,这是一个特例。

首先,如果一个应用程序是 "installed" 并且出现在 Programs and Features 列表中,那么您可以使用我从本文中编写的 Get-InstalledApp.ps1 脚本来查看安装了哪些应用程序:

Windows IT Pro: Auditing 32-Bit and 64-Bit Applications with PowerShell

但是,由于 Internet Explorer 是一个 OS 组件而不是 "installed" 作为典型程序,我编写了一个不同的脚本来查找 IE 版本:

Get-IEVersion.ps1