Get-ItemProperty:无法将参数绑定到参数'Path',因为它是空的
我已经阅读了很多帖子,并且拉了很多很棒的信息。但我仍然有一个问题,从注册表获取版本号。我发现这个代码得到一个IE版本,似乎工作得很好。Get-ItemProperty:无法将参数绑定到参数'Path',因为它是空的
$array [email protected]()
$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
但是,当我修改它,试图得到它没有谷歌的Chrome版本与
**Get-ItemProperty : Cannot bind argument to parameter 'Path' because it is null.**
这里是我的修改,以试图让Chrome版本。
$array [email protected]()
$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:\scripts\1222016_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')
我不得不错过别的东西。我可以得到这个在本地运行,但只要我添加尝试获取远程信息,我得到的路径为空。 $ regkey ='HKLM:SOFTWARE \ Wow6432Node \ Google \ Update \ clients \ {8A69D345-D564-463c-AFF1-A69D9E530F96}' $ checkkey = Test-Path $ regkey $ regpath = $ regkey if($ checkkey -eq $ true){(Get-ItemProperty -path $ regpath -name pv).pv} ELSE {'Not Installed'} – SeanDu
如果我理解你的问题,你问有关如何判断程序安装什么在计算机上,以及计算机上的IE版本是什么,这是一种特殊情况。
首先,如果一个应用程序被“安装”,并出现在Programs and Features
列表中,那么你可以使用Get-InstalledApp.ps1剧本我从这篇文章中写道:看到应用程序安装的内容:
Windows IT Pro: Auditing 32-Bit and 64-Bit Applications with PowerShell
但是,由于Internet Explorer的是一个操作系统组件,而不是“装”作为一个典型的程序,我写了一个不同的脚本,找到IE版本:
从技术上讲,我正在寻找检索安装的版本。我基本上双重检查我们的第三方更新安装程序。 – SeanDu
了解。我的答案中的脚本将完成此操作。 –
会建议'林通过'Get-Content'获取CSV文件的端口-csv'。 –
您尝试过哪些调试?通常当你由于空值而出现错误时,这是因为你期望存在的东西不存在。 –
当我通过它时,它转储在“你无法调用一个空值表达式的方法。” 在C:\ scripts \ Get_Chrome_Version.ps1:8 char:1 + $ value = $ regkey.GetValue('pv ')“ – SeanDu