2012-04-23 90 views
2

我已經使用Power Shell檢查是否存在使用此命令的路徑。 powershell測試路徑「HKCU:\ Software \ Microsoft \ Windows」現在怎樣才能將其延伸到遠程機器。如果我想在遠程計算機上測試註冊表路徑,語法是什麼,我試過powershell測試路徑「\\機器名\ HKCU:\軟件\微軟\ Windows」和它不工作。建議一些方法來測試它。檢查遠程機器中是否存在註冊表路徑

回答

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和有效地運行相同的命令,你會在本地運行框。

+0

thts gr8..how檢查我如果單獨的鍵退出使用這種方法,只有這樣才能清潔香港的存在是。使用異常。有沒有其他直接的方法可以做到這一點? – sriram 2012-04-23 06:18:46

+0

invoke命令對我的目的很酷。謝謝! – sriram 2012-04-23 06:49:05

0

您無法連接到遠程計算機的當前用戶配置單元。以下是使用Remote Regitry模塊檢查遠程服務器的hklm配置單元中是否存在遠程密鑰的示例。該模塊可在CodePlex上找到:psremoteregistry.codeplex.con

試驗REGKEY -ComputerName server1的-Key軟件\微軟\ WINOWS -Hive LocalNachine

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" 
} 
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"} 

你也可以把腳本塊內容爲*的.ps1文件(這裏的一切都在{}然後用調用它:調用命令-ComputerName NETBIOSNAME -FilePath「FQLP