【发布时间】:2016-04-29 18:44:31
【问题描述】:
我正在尝试更新多个不同用户框上的 DSN,它们应该运行 Windows 7 x64。人们有时会创建自己的 DSN(可能是系统,也可能是用户)以及管理员拥有的其他地方。当服务器名称为特定值时,我想用该框的 CNAME 替换它。
我读了这篇文章,这似乎是一个好的开始:http://www.sqldataplatform.com/Blog/Post/9/Modifying-ODBC-Settings-with-WMI-and-PowerShell
但是,在我的机器上进行测试时,我遇到了一个问题,我看不到我期望的系统 DSN。
当我运行 64 位“数据源 (ODBC)”(C:\Windows\system32\odbcad32.exe) 时,这是您转到“开始”->“管理工具”->“数据源”时的默认设置,然后我查看我创建的数据源。但是,这不起作用:
Get-ChildItem -path "HKLM:\SOFTWARE\ODBC\ODBC.INI\"
相反,我得到了我在 32 位版本的数据源 (ODBC) 中创建的系统 DSN,即“C:\Windows\SysWOW64\odbcad32.exe”
奇怪的是,如果我运行它,我会得到完全相同的 32 位 DSN,我希望在其中获得 32 位和 64 位,即使我在打开注册表时看到它们在不同的节点中.
Get-ChildItem -path "HKLM:\SOFTWARE\ODBC\ODBC.INI\"
Get-ChildItem -path "HKLM:\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\"
那么,知道如何获得另一个 DSN 吗?谢谢。
【问题讨论】:
-
我认为您混淆了哪个是 32 位版本。 System32 是 64 位的,SysWow64 是 32 位的。
-
好的,很高兴知道。我会更新的。不过,同样的问题也适用 - 为什么我可以看到一个,而看不到另一个,我如何才能看到两者?
-
要查看32位的,需要运行C:\windows\SysWOW64\odbcad32.exe。要查看 64 位版本,只需运行 odbcad32.exe(来自 System32)。
-
正确 - 运行它们的 ODBC 应用程序,我可以看到它们。运行 regedit 我看到两个键。但我不能同时使用 powershell。
-
如果您正在运行 32 位的 powershell 会话,您将只能看到 32 位的会话。如果您运行的是 64 位会话,则可以同时看到两者。
标签: powershell odbc registry dsn