Unable to read a 64 bit registry key from a 32 bit version of win2008 using powershell

后端 未结 3 899
醉话见心
醉话见心 2020-12-21 15:47

Im trying to read the below registry key on a 64 bit version of windows server 2008 r2 from a 32 bit windows 2008 using powershell, but the value comes as blank and does no

相关标签:
3条回答
  • 2020-12-21 16:14

    Try this as your last line if looking for values:

    $ref.GetValueNames()
    

    or if you are looking for keys:

    $ref.GetSubKeyNames()
    
    0 讨论(0)
  • 2020-12-21 16:25

    From 32bit powershell, you access the 64bit registry by calling the 64bit version of reg.exe from the command line. The trick is in using the sysnative path instead of system32, which gets you out of the syswow64 sandbox and into the real 64 bit registry.

    C:\Windows\SysNative\reg.exe QUERY "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"
    
    0 讨论(0)
  • 2020-12-21 16:25

    If you are running PowerShell on .NET 4 (look at the output of $PSVersionTable) then you can use the new RegistryView enumeration (and OpenRemoteBaseKey overload) with the [Microsoft.Win32.RegistryView]::Registry64 to be able to view the 64-bit registry.

    Alternatively you could use PowerShell remoting since by default you will be connected to the 64-bit PowerShell endpoint on the remote machine e.g.:

    $line = "WIN-QENOBBC64B8"
    Invoke-Command -ComputerName $line {Get-Item 'HKLM:\Software\Microsoft\Microsoft SQL Server\Instance Names\SQL'}
    

    Note that you may have to enable remoting on the remote server (can't remember if PowerShell remoting is enabled by default on servers). You can do this by running the following commands on the remote server in an elevated/admin PowerShell prompt:

    Set-ExecutionPolicy RemoteSigned
    Enable-PSRemoting
    
    0 讨论(0)
提交回复
热议问题