Stellen Sie eine FrageStellen Sie eine Frage
 

BeantwortetGet Remote Registry value.

  • Montag, 4. Mai 2009 14:09Laserdue TeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillen
     
    is there a way to get value of a registry from remote computer..I am trying to values of these keys...

    HKEY_LOCAL_MACHINE\SOFTWARE\MQUEST\ScriptEngine\Program\PrimaryScriptServer
    HKEY_LOCAL_MACHINE\SOFTWARE\MQUEST\ScriptEngine\Program\SecondaryScriptServer
    HKEY_LOCAL_MACHINE\SOFTWARE\MQUEST\ScriptEngine\Program\Server1
    HKEY_LOCAL_MACHINE\SOFTWARE\MQUEST\ScriptEngine\Program\Server2

    any help is greatly appreciated.

Antworten

  • Montag, 11. Mai 2009 18:15Vadims PodansMVPTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillen
     Beantwortet
    I understand. In your VBS code is shown that SOFTWARE\MQUEST\ScriptEngine\Program\ is Key path. However PrimaryScriptServer is not a key, but value. And code above retrives only names. If you want to get particular name value, you can use :

    $strMachineName = 'MURBAMEXV004'
    $objReg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $strMachineName)
    $objRegKey= $objReg.OpenSubKey("SOFTWARE\\MQUEST\\ScriptEngine\\Program" )
    $objRegKey.GetValue("PrimaryScriptServer")

    If I understand correctly, this code should work. And after this you can read data for values:
    $strMachineName = 'MURBAMEXV004'
    $objReg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $strMachineName)
    $objRegKey= $objReg.OpenSubKey("SOFTWARE\\MQUEST\\ScriptEngine\\Program" )
    "PrimaryScriptServer", "SecondaryScriptServer", "Server1", "Server2" | %{
    "Data for value " + $_
    $objRegKey.GetValue("$_")
    }
    or place values to variable:
    $values = "PrimaryScriptServer", "SecondaryScriptServer", "Server1", "Server2"

    and query:
    $values | %{
    "Data for value " + $_
    $objRegKey.GetValue("$_")
    }
    [тут могла быть ваша реклама] http://www.sysadmins.lv

Alle Antworten

  • Montag, 4. Mai 2009 15:24Grégory SchiroMVPTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillen
     Vorgeschlagene Antwort
    Hi,

    You can use:

    $strMachineName = '.'
    $objReg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $strMachineName)
    $objRegKey= $objReg.OpenSubKey("SYSTEM\\SOFTWARE\MQUEST\\ScriptEngine\\Program\\PrimaryScriptServer" )
    $objRegkey.GetValueNames()

    Hope it helps.


    Grégory Schiro - PowerShell & MOF
  • Montag, 4. Mai 2009 15:36Laserdue TeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillen
     
    getting error here is the debug output

    DEBUG:    1+ ./reg1.ps1
    DEBUG:     ! CALL script 'reg1.ps1'
    DEBUG:    1+ $strMachineName = 'MURBAMEXV004'
    DEBUG:     ! SET $strMachineName = 'MURBAMEXV004'.
    DEBUG:    2+ $objReg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $strMachineName)
    DEBUG:     ! CALL method 'static Microsoft.Win32.RegistryKey OpenRemoteBaseKey(RegistryHive hKey, String machineName)'
    DEBUG:     ! SET $objReg = 'HKEY_LOCAL_MACHINE'.
    DEBUG:    3+ $objRegKey= $objReg.OpenSubKey("SYSTEM\\SOFTWARE\MQUEST\\ScriptEngine\\Program\\PrimaryScriptServer" )
    DEBUG:     ! CALL method 'Microsoft.Win32.RegistryKey OpenSubKey(String name)'
    DEBUG:     ! SET $objRegKey = ''.
    DEBUG:    4+ $objRegkey.GetValueNames()
    DEBUG:    2+                                     if ($ErrorView -ne "CategoryView") {
    DEBUG:    3+                                        $myinv = $_.InvocationInfo
    DEBUG:     ! SET $myinv = 'System.Management.Automation.InvocationInfo'.
    DEBUG:    4+                                        switch -regex ($myinv.MyCommand.CommandType)
    DEBUG:   24+                                                if ($myinv.MyCommand.Name)
    DEBUG:    2+                                     if ($_.InvocationInfo) {
    DEBUG:    3+                                         $posmsg = $_.InvocationInfo.PositionMessage
    DEBUG:     ! SET $posmsg = '
    At C:\reg1.ps1:4 char:25
    + $objRegkey.GetValueNames( ...'.
    DEBUG:    7+                                     if ($ErrorView -eq "CategoryView") {
    DEBUG:   11+                                         $_.Exception.Message + $posmsg
    You cannot call a method on a null-valued expression.
    At C:\reg1.ps1:4 char:25
    + $objRegkey.GetValueNames( <<<< )
  • Montag, 4. Mai 2009 16:21Laserdue TeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillen
     
    IT is a Reg_SZ value i am trying to read if that helps
  • Montag, 4. Mai 2009 16:27Laserdue TeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillen
     
    Rahter than getting the value it would be enough to check if the said keys exist
  • Dienstag, 5. Mai 2009 06:41Pravin Mestry TeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillen
     
    Hi,
    Please have a read of these articles
  • Dienstag, 5. Mai 2009 07:53Vadims PodansMVPTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillen
     Vorgeschlagene Antwort
    $objRegKey= $objReg.OpenSubKey("SOFTWARE\\MQUEST\\ScriptEngine\\Program\\PrimaryScriptServer" )
    one slash is missed.  And remove SYSTEM in key path.
    [тут могла быть ваша реклама] http://www.sysadmins.lv
  • Dienstag, 5. Mai 2009 08:42Laserdue TeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillen
     
    Still getting same error
  • Dienstag, 5. Mai 2009 14:00Vadims PodansMVPTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillen
     
    please, show your code.
    [тут могла быть ваша реклама] http://www.sysadmins.lv
  • Freitag, 8. Mai 2009 11:18Laserdue TeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillen
     
    $strMachineName = 'MURBAMEXV004'
    $objReg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $strMachineName)
    $objRegKey= $objReg.OpenSubKey("SOFTWARE\\MQUEST\\ScriptEngine\\Program\\PrimaryScriptServer" )
    $objRegkey.GetValueNames(
  • Freitag, 8. Mai 2009 17:37Vadims PodansMVPTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillen
     
    this fine works for me. Are you sure that this key exist in HKLM\SOFTWARE\MQUEST\ScriptEngine\Program\PrimaryScriptServer on MURBAMEXV004?
    [тут могла быть ваша реклама] http://www.sysadmins.lv
  • Montag, 11. Mai 2009 14:57Laserdue TeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillen
     

    PS C:\> ./reg1.ps1
    You cannot call a method on a null-valued expression
    At C:\reg1.ps1:4 char:25
    + $objRegkey.GetValueNames <<<< ()

    i have check that machine even in 005 the key exist...I can pull if from this VBS..


    Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
    strKeyPath = "SOFTWARE\MQUEST\ScriptEngine\Program\"
    strValueName = "PrimaryScriptServer"
    oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
    verFn = StrValue
  • Montag, 11. Mai 2009 18:15Vadims PodansMVPTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillen
     Beantwortet
    I understand. In your VBS code is shown that SOFTWARE\MQUEST\ScriptEngine\Program\ is Key path. However PrimaryScriptServer is not a key, but value. And code above retrives only names. If you want to get particular name value, you can use :

    $strMachineName = 'MURBAMEXV004'
    $objReg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $strMachineName)
    $objRegKey= $objReg.OpenSubKey("SOFTWARE\\MQUEST\\ScriptEngine\\Program" )
    $objRegKey.GetValue("PrimaryScriptServer")

    If I understand correctly, this code should work. And after this you can read data for values:
    $strMachineName = 'MURBAMEXV004'
    $objReg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $strMachineName)
    $objRegKey= $objReg.OpenSubKey("SOFTWARE\\MQUEST\\ScriptEngine\\Program" )
    "PrimaryScriptServer", "SecondaryScriptServer", "Server1", "Server2" | %{
    "Data for value " + $_
    $objRegKey.GetValue("$_")
    }
    or place values to variable:
    $values = "PrimaryScriptServer", "SecondaryScriptServer", "Server1", "Server2"

    and query:
    $values | %{
    "Data for value " + $_
    $objRegKey.GetValue("$_")
    }
    [тут могла быть ваша реклама] http://www.sysadmins.lv
  • Freitag, 19. Juni 2009 16:18Tord Bergset TeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillenTeilnehmermedaillen
     
    Why make it so hard when it can be done so easy :-)

    reg query "\\<computername>\HKLM\SOFTWARE\MQUEST\ScriptEngine\Program\PrimaryScriptServer

    Check the "reg query /?" command for details

    To get info from several machines this command can be used:
    for  %i in (server1,server2,server3) do reg query "\\%i\HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v SessionPoolSize

    This is an example to get/query a given registry key value for all servers in a Terminal Server farm (run from a TS):
    for /f "skip=3 delims=* " %i in ('qfarm /servers') do @echo --------------- %i --------------------- &  reg query "\\%i\HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v SessionPoolSize


    Have fun,
    Tord Bergset