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 版本:
我阅读了很多帖子并提取了很多重要信息。但我仍然无法从注册表中获取版本号。我找到了这个代码来获得一个 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 版本: