我使用Power Shell使用此命令检查路径是否存在。 powershell测试路径“HKCU:\ Software \ Microsoft \ Windows”现在如何将其扩展到远程计算机。如果我想在远程计算机中测试注册表路径,我尝试了 powershell test-path“\\ machinename \ HKCU:\ Software \ Microsoft \ Windows”,并且它无效。建议一些方法来测试它。
答案 0 :(得分:3)
您可以按照此处所述访问它:http://powershell.com/cs/blogs/tips/archive/2011/02/15/accessing-registry-remote.aspx
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', 'server123')
$key = $reg.OpenSubKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall')
$key.GetSubKeyNames() | ForEach-Object {
$subkey = $key.OpenSubKey($_)
$i = @{}
$i.Name = $subkey.GetValue('DisplayName')
$i.Version = $subkey.GetValue('DisplayVersion')
New-Object PSObject -Property $i
$subkey.Close()
}
$key.Close()
$reg.Close()
另一种方法是在远程计算机上启用PSRemoting并使用invoke-command
,并有效地运行与在本地盒子上运行的命令相同的命令。
答案 1 :(得分:0)
您无法连接到远程计算机的当前用户配置单元。以下是使用Remote Regitry模块检查远程服务器的hklm配置单元中是否存在远程密钥的示例。该模块可以在codeplex上找到:psremoteregistry.codeplex.con
Test-RegKey -ComputerName server1 -Key software \ microsoft \ winows -Hive LocalNachine
答案 2 :(得分:0)
This网站帮助了我。代码基本上检查一个密钥,然后检查另一个密钥,如果第一个密钥不存在。它还会在尝试从中读取值之前验证该子项是否存在。如果两者都不存在,那么try / catch可以帮助解决这个问题。
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $computerName)
$regkey = $reg.OpenSubkey("SOFTWARE\\Symantec\\Symantec Endpoint Protection\\AV\\Storages\\Filesystem\\RealTimeScan")
if(-not $regkey) {
$regkey = $reg.OpenSubkey("SOFTWARE\\Wow6432Node\\Symantec\\Symantec Endpoint Protection\\AV\\Storages\\Filesystem\\RealTimeScan")
}
$autoProtectStatus = ""
$null = ""
if ($regkey.GetValue("OnOff", $null) -ne $null) {
$autoProtectStatus = $regkey.GetValue("OnOff")
}
if ($autoProtectStatus -eq 1) {
$autoProtectStatus = "Protection On"
} elseif ($autoProtectStatus -eq 0) {
$autoProtectStatus = "Protection Off"
} else {
$autoProtectStatus = "Unknown State"
}
答案 3 :(得分:0)
Q& A的大部分时间都是3岁或以上。我怀疑Powershell的新版本必须清理了很多这个。话虽如此,仍然没有直接命令检查远程计算机上的注册表(据我所知)。这有效 - 它检查是否安装了.NET 4.6.2(它比其他答案更简单吗?)
invoke-command -computername <NetBiosName> -scriptblock {test-path -Path
"HKLM:\Software\Microsoft\.NetFramework\v4.0.30319\SKUs\.NetFramework,
Version=v4.6.2"}
您还可以将scriptblock内容放入* .ps1文件({}内的所有内容,然后使用以下命令调用它:Invoke-Command -ComputerName NetBiosName -FilePath&#34; FQLP &#34;