Я столкнулся с странной ситуацией.Test-Path Powershell в реестре зависит от среды хоста
Я хочу знать, если этот ключ реестра, выполнив:
Test-Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\RefCount\SQLSysClrTypes12"
Этот реестр существует на моей испытательной машине. Если я запустил этот скрипт с помощью консоли PowerShell (% SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe), он вернет true.
НО
Если я запускаю этот скрипт на первой открытой командной строки, а затем запустить PowerShell (C: \ Windows \ system32> C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ powershell.exe)
тогда он не найдет раздел реестра.
Я также пробовал использовать другой раздел реестра, некоторые из них работают для обоих хостов. Я также тестировал его в режиме администратора, не делал другого.
Какая разница между этими исполняемыми файлами PowerShell (32 бит и 64 бит)?
Почему бы вам вернуть другой результат, чем другой (есть ли у них другой доступ к реестру)?
Причина я бегу в это Я разрабатываю скрипт, используя по умолчанию PowerShell ISE, но когда я перевожу его в пользовательских действий в Advanced Installer, он будет использовать PowerShell в SysWOW64, и не найти ключ.
Итак, в Advance Installer вы можете указать, является ли скрипт 64-разрядным скриптом, который изменяет файл powershell.exe для запуска. Думаю, моя основная проблема решена. Однако мне все же нравится знать, почему? Ключ реестра для 64-битного SQL Server 2012, будет ли это работать, если я установлю SQL Server 2012 32 бит – dsum
Возможный дубликат [Как получить доступ к 64-разрядному реестру из 32-разрядного экземпляра Powershell?] (Http://stackoverflow.com/questions/630382/how-to-access-the-64-bit-registry-from-a-32-bit-powershell-instance) –